📜  django urlpattern - Python (1)

📅  最后修改于: 2023-12-03 15:14:43.551000             🧑  作者: Mango

Django中的urlpattern

在Django中,URL模式用于确定请求(request)应该分发到哪个视图函数(view),以及如何处理请求中的参数。

URL模式的结构

在Django的urls.py文件中,URL模式被定义为一个列表。每个URL模式都由以下几个部分组成:

  • 正则表达式:用于匹配请求的URL路径。
  • 视图函数:请求应该被分发到哪个视图函数处理。
  • 参数:从请求中提取的任何参数。

以下是一个基本的URL模式的示例:

from django.urls import path
from . import views

urlpatterns = [
    path('articles/', views.article_list),
    path('articles/<int:pk>/', views.article_detail),
]

在这个例子中,我们定义了两个URL模式,一个用于列出所有文章,另一个用于获取单篇文章。第一个URL模式将匹配/articles/,并将请求分发到article_list视图函数。 第二个URL模式将匹配/articles/1/这样的URL,其中1是文章的主键(primary key),并将请求分发到article_detail视图函数。

URL模式的参数

URL模式可以从请求的URL中提取参数并将其传递给视图函数。例如,在以下URL模式中:

path('blog/<int:year>/<int:month>/<slug:slug>/', views.blog_post)

我们从URL中提取3个参数:yearmonthslugyearmonth是整数,而slug是一个URL友好的字符串(例如,标题的一部分)。

这些参数将作为关键字参数传递给blog_post视图函数。 因此,blog_post函数需要按照模式定义接受3个参数:

def blog_post(request, year, month, slug):
    # 处理请求...
    pass
URL模式名称

为方便起见,我们还可以为URL模式命名。 命名URL模式可以使我们在代码中更轻松地引用它们,而不必硬编码URL路径。以下是一个具有命名URL模式的示例:

urlpatterns = [
    path('articles/', views.article_list, name='article_list'),
    path('articles/<int:pk>/', views.article_detail, name='article_detail'),
]

在这个例子中,我们为每个URL模式提供了名称。 现在,我们可以使用reverse()函数根据URL模式名称构建URL。以下是一个在视图函数中使用命名URL模式的示例:

from django.urls import reverse

def my_view(request):
    url = reverse('article_list')
    # 使用URL处理请求...
总结

这是Django中URL模式的基本介绍。 URL模式非常重要,因为它们控制着Django应用程序中的请求分发。 通过了解URL模式的结构和参数,以及如何为URL模式命名,您可以更好地掌握Django中的请求处理过程。