Django-路由(re_path,路由分发)

 1 #  re_path
 2 #re_path是用正则匹配
 3 from django.contrib import admin
 4 from django.urls import path,re_path
 5 from app01 import views
 6 
 7 urlpatterns = [
 8     path('admin/', admin.site.urls),
 9     path('login/',views.login.as_view()),
10     #表示之匹配 index/test 开头,并且index/test结尾的路径 
11     re_path(r'^index/test$',views.test),
12     #匹配index/(四位数字年份)如果在正则里面加了括号,那么会在调用函数的时候自动将括号里匹配成功的内容传给试图函数,要在创建函数的时候接收,否则会报错
13     re_path(r'^inde/([0-9]{4})/$',views.year),
14 ]

注意:

  • 如果要冲URL中捕获一个值,就需要在表达式用添加括号

  • URL前面不需要添加反斜杠,因为每个URL都有。
  • 每个正则表达式前面的'r'是可选的但是建议机上。它高数PYthon这个字符串是“原始的”——字符串中任何字符都不应该转意
 1 #re_path  分组起名
 2 
 3 
 4 
 5 from django.contrib import admin
 6 from django.urls import path,re_path
 7 from app01 import views
 8 
 9 urlpatterns = [
10     path('admin/', admin.site.urls),
11     path('login/',views.login.as_view()),
12 #如果要给获取的参数起名,URL写法'index/?P<名字>表达式' 但是在视图函数接受的时候,必须使用起的名字接受
13     re_path(r'^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.test),
14 ]
 1  #路由分发
 2  
 3  
 4  
 5 '''
 6 比如:我们创建了,这几个应用 app01、app02
 7         然后我们在每个应用里创建了 urls.py
 8 
 9 '''
10 
11 
12 #-------------------这里是app01下urls.py的内容---------------------------
13  from django.contrib import admin
14  from django.urls import path,re_path
15  from app01 import views
16  
17  urlpatterns = [
18      path('admin/', admin.site.urls),
19      path('login/',views.login.as_view()),
20  #如果要给获取的参数起名,URL写法'index/?P<名字>表达式' 但是在视图函数接受的时候,必须使用起的名字接受
21      re_path(r'^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.test),
22  ]
23 
24 #--------------------------------end---------------------------
25 
26 
27 
28 #-------------------这里是全局下urls.py的内容---------------------------
29 
30 from django.contrib import admin
31 #这里需要导入include
32 from django.urls import path,re_path,include
33 #这里需要导入app01的urls
34 from app01 import urls
35 
36 urlpatterns = [
37     path('admin/', admin.site.urls),
38 #这种写法,需要在原来的路由前加上app01/
39     re_path(r'^app01/',include('app01.urls')),
40 #这种写法,不需要加app01,url写法跟以前一样
41     re_path(r'^',include('app01.urls'))
42 
43 
44 ]
原文地址:https://www.cnblogs.com/wtil/p/9242108.html