Python Django URL模式
在Django中,视图是Python函数,它接受一个URL请求作为参数,并返回一个HTTP响应或抛出一个异常,如404。每个视图都需要映射到一个相应的URL模式。这是通过一个叫做URLConf(URL配置)的Python模块完成的。
让项目名称为myProject。作为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模式。
URL patterns
这里有一个book/urls.py的示例代码。
from django.urls import path
from . import views
urlpatterns = [
path('books/<int:pk>/', views.book_detail),
path('books/<str:genre>/', 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是路径转换器,分别捕获一个整数和字符串值。
Path convertors:
在Django中,有以下的路径转换器类型
- int – 匹配零或任何正整数。
- str – 匹配任何非空字符串,不包括路径分隔符(’/’)。
- slug – 匹配任何slug字符串,即由字母、数字、连字符和分数以下组成的字符串。
- path – 匹配任何非空字符串,包括路径分隔符(’/’)。
- uuid – 匹配一个UUID(通用唯一标识符)。