Django 中如何处理多个 URL 匹配的情况?
在 Django 中,当有多个 URL 匹配时,Django 会按照 URL 的顺序循环匹配,直到找到匹配的 URL 为止。如果一个 URL 段匹配多个 URL 模式,则 Django 会使用第一个匹配成功的模式。
例如,我们有以下两个 URL 模式:
path('pidancode/', views.pidancode_view), path('<slug:username>/', views.user_view),
当用户访问 pidancode/
时,Django 会匹配第一个模式并执行 pidancode_view
。而当用户访问 皮蛋编程/
时,Django 会匹配第二个模式并执行 user_view
。
如果我们想要让 pidancode/
也能匹配第二个模式,我们需要将第二个模式的顺序调整为:
path('<slug:username>/', views.user_view), path('pidancode/', views.pidancode_view),
这样当用户访问 pidancode/
时,Django 会先匹配第一个模式,因为 pidancode
不是一个合法的 slug
,所以匹配失败,然后匹配第二个模式并执行 pidancode_view
。
代码演示:
from django.urls import path from . import views urlpatterns = [ path('<slug:username>/', views.user_view), path('pidancode/', views.pidancode_view), ]
其中,views.pidancode_view
和 views.user_view
分别是两个视图函数的名称。
相关文章