📜  Django URL 模式 | Python

📅  最后修改于: 2022-05-13 01:55:38.170000             🧑  作者: Mango

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)

这里, intstr是路径转换器,分别捕获整数和字符串值。

路径转换器:
以下路径转换器类型在 Django 中可用

  • int – 匹配零或任何正整数。
  • str – 匹配任何非空字符串,不包括路径分隔符 ('/')。
  • slug - 匹配任何 slug字符串,即由字母、数字、连字符和下划线组成的字符串。
  • path – 匹配任何非空字符串,包括路径分隔符('/')
  • uuid – 匹配 UUID(通用唯一标识符)。