1.在全局配置文件下找到urls.py进行路由配置
配置路由要指明哪个应用,和写好模块导入的函数
2.找到路由要启动的应用,在应用里找到视图函数进行设计
path(‘url模式/“,视图函数)

注意第五部没有/

1.1.110路由匹配模式1:精确字符串格式
假设我们有一个 Django 应用,并且希望在访问 /about/ URL 时调用一个名为 about_view 的视图函数。可以在 urls.py 文件中定义如下的路由规则:
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('about/', views.about_view, name='about'),
]
详细解释
-
path函数:path函数用于定义 URL 路由。它接受多个参数:- 第一个参数是 URL 模式,这里是
'about/',表示精确匹配/about/。 - 第二个参数是视图函数,这里是
views.about_view,表示当 URL 匹配'about/'时,调用about_view函数。 - 第三个参数是可选的
name参数,用于为这个 URL 路由命名,便于在模板或其他地方引用。
- 第一个参数是 URL 模式,这里是
-
精确字符串格式:
- 在这个例子中,URL 模式
'about/'是一个精确字符串格式。这意味着只有当请求的 URL 完全匹配/about/时,才会调用about_view视图函数。 - 例如,访问
http://example.com/about/会匹配这个路由规则,而访问http://example.com/about(缺少尾部斜杠)或http://example.com/about/me则不会匹配。
- 在这个例子中,URL 模式
视图函数示例
为了完整性,这里提供一个简单的视图函数示例:
# views.py
from django.http import HttpResponse
def about_view(request):
return HttpResponse("This is the about page.")
1.1.111路由匹配模式2:路径转换器格式


1.1.12路由匹配模式3:正则表达式
使用 re_path 和正则表达式匹配 URL
re_path 函数与 path 函数类似,但它允许你使用正则表达式来匹配 URL 模式。
示例
以下是一些使用正则表达式的 URL 模式示例:
from django.urls import re_path
from . import views
urlpatterns = [
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.article_year),
re_path(r'^users/(?P<username>\w{1,30})/$', views.user_profile),
re_path(r'^files/(?P<file_path>.+)/$', views.file_detail),
re_path(r'^items/(?P<item_id>[0-9a-fA-F-]{36})/$', views.item_detail),
]
在这些示例中:
r'^articles/(?P<year>[0-9]{4})/$'匹配一个四位数字的年份,并将其作为year参数传递给视图article_year。r'^users/(?P<username>\w{1,30})/$'匹配一个长度为 1 到 30 的字母数字用户名,并将其作为username参数传递给视图user_profile。r'^files/(?P<file_path>.+)/$'匹配一个包含任意字符的文件路径,并将其作为file_path参数传递给视图file_detail。r'^items/(?P<item_id>[0-9a-fA-F-]{36})/$'匹配一个 UUID,并将其作为item_id参数传递给视图item_detail。
正则表达式语法
^表示字符串的开始。$表示字符串的结束。.匹配任意单个字符。+表示前面的字符或表达式至少出现一次。{n}表示前面的字符或表达式出现恰好 n 次。\d匹配任意数字字符,相当于[0-9]。\w匹配任意字母数字字符,相当于[a-zA-Z0-9_]。(?P<name>pattern)用于捕获匹配的内容并将其命名为name,以便在视图函数中作为参数使用。
1.1.13路由嵌套匹配
使用 include 实现路由嵌套
假设你有一个主应用程序 main 和一个子应用程序 blog,你希望在 main 的 URL 配置中包含 blog 的 URL 配置。
主应用程序的 URL 配置 (main/urls.py)
首先,在主应用程序的 URL 配置文件中使用 include 函数包含子应用程序的 URL 配置:
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
]
子应用程序的 URL 配置 (blog/urls.py)
在子应用程序中,定义自己的 URL 配置:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<int:post_id>/', views.detail, name='detail'),
path('archive/', views.archive, name='archive'),
]
在这个示例中:
- 访问
http://yourdomain.com/blog/会调用blog应用的index视图。 - 访问
http://yourdomain.com/blog/1/会调用blog应用的detail视图,并将post_id参数传递给视图。 - 访问
http://yourdomain.com/blog/archive/会调用blog应用的archive视图。
嵌套更深层级的路由
你可以继续嵌套更深层级的路由。例如,如果 blog 应用有一个 comments 子应用:
子应用程序的 URL 配置 (comments/urls.py)
from django.urls import path
from . import views
urlpatterns = [
path('', views.comment_list, name='comment_list'),
path('<int:comment_id>/', views.comment_detail, name='comment_detail'),
]
修改 blog 应用的 URL 配置以包含 comments 子应用 (blog/urls.py)
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<int:post_id>/', views.detail, name='detail'),
path('archive/', views.archive, name='archive'),
path('comments/', include('comments.urls')),
]
在这个示例中:
- 访问
http://yourdomain.com/blog/comments/会调用comments应用的comment_list视图。 - 访问
http://yourdomain.com/blog/comments/1/会调用comments应用的comment_detail视图,并将comment_id参数传递给视图。



















