Django中的路由指的就是urls.py文件,称之为路由层
路由层即用户请求地址与视图函数的映射关系,如果被一个网站比喻成一本字典的话,我们这个路由(urls.py)就好比是这个字典的目录,在Django中路由默认在urls.py文件中
-
path
参数
- route 书写匹配url
- view 当django匹配到了url,就会执行特定的视图函数
- name 为url进行取名,目的是在任何位置,都能反向解析出当前路由地址
实例
path('index/', views.index, name='index'),
-
re_path
参数
- route 书写正则表达式的路由地址
- view 当django匹配到了url,就会执行特定的视图函数
- name 为url进行取名,目的是在任何位置,都能反向解析出当前路由地址
re_path(r'^index2/$', views.index, name='index2'),
完全匹配 如果不添加
^$
路由中包含index2就可以访问了例如:http://127.0.0.1/aaindex 也可以访问到index网页,因为aaindex包含了index
-
注意
一个视图函数可以存在多个路由地址
from django.urls import path from django.urls import re_path from . import views urlpatterns = [ # 首页的路由配置 path(r'', views.index, name='index1'), path(r'index/', views.index, name='index2'), re_path(r'^index2/$', views.index, name='index3'), ]
在工程目录下的urls.py里,使用include进行关联
-
App/urls.py
from django.urls import path from . import views urlpatterns = [ # 首页的路由配置 path('index/', views.index), ]
-
project/urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('App.urls')), ]
-
include
-
导入
from django.urls import path, include
-
作用
找到子路由模块
-
参数
- 子路由模块路径
- 命名空间namespace(用于反向解析,动态构造路由地址)
-
实例
path('', include(('App.urls','App'), namespace='App')),
-
多个自路由模块
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('App/', include(('App.urls','App'), namespace='App')), path('App2/', include(('App2.urls','App2'), namespace='App2')), ]
注意:如果说自路由前面添加了前缀,访问的时候,就要添加上
-