Django URL 模式 | Python
先决条件: Django 中的视图
在 Django 中,视图是Python函数,它以 URL 请求作为参数并返回 HTTP 响应或抛出类似 404 的异常。每个视图都需要映射到相应的 URL 模式。这是通过一个名为 URLConf(URL configuration) 的Python模块完成的
让项目名称为 myProject。用作ROOT_URLCONF
的Python模块是myProject/settings.py
中 ROOT_URLCONF 的值。默认情况下,这设置为'myProject.urls'
。每个 URLConf 模块都必须包含一个变量urlpatterns
,它是一组要与请求的 URL 匹配的 URL 模式。这些模式将按顺序检查,直到找到第一个匹配项。然后调用第一个匹配对应的视图。如果没有匹配的 URL 模式,Django 调用适当的错误处理视图。
包括其他 URLConf 模块
为 Django 中的每个应用程序提供一个 URLConf 模块是一个很好的做法。该模块需要包含在根 URLConf 模块中,如下所示:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('books.urls')),
]
这告诉 Django 在文件books/urls.py
中搜索 URL 模式。
网址格式
下面是 books/urls.py 的示例代码:
from django.urls import path
from . import views
urlpatterns = [
path('books//', views.book_detail),
path('books//', views.books_by_genre),
path('books/', views.book_index),
]
例如,
- 对 /books/crime/ 的 URL 请求将与第二个 URL 模式匹配。结果,Django 将调用函数
views.books_by_genre(request, genre = "crime")
。 - 同样,URL 请求 /books/25/ 将匹配第一个 URL 模式,Django 将调用函数
views.book_detail(request, pk =25)
。
这里, int
和str
是路径转换器,分别捕获整数和字符串值。
路径转换器:
以下路径转换器类型在 Django 中可用
- int – 匹配零或任何正整数。
- str – 匹配任何非空字符串,不包括路径分隔符 ('/')。
- slug - 匹配任何 slug字符串,即由字母、数字、连字符和下划线组成的字符串。
- path – 匹配任何非空字符串,包括路径分隔符('/')
- uuid – 匹配 UUID(通用唯一标识符)。