1.路由分发:用于大项目,大项目分为很多小项目:app01,app02...... http://127.0.0.1:8000/app01/index/ urls.py from django.contrib import admin from django.urls import path,include #记得导入include urlpatterns = [ # path('admin/', admin.site.urls), path('app01/', include('app01.urls')),#匹配http://127.0.0.1:8000/app01/index/中的app01 path('app02/', include('app02.urls')), path('app03/', include('app03.urls')), ] app01文件夹的urls.py from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ # path('admin/', admin.site.urls), path('index/', views.index),#匹配http://127.0.0.1:8000/app01/index/中的index path('add/', views.add), ] app02文件夹的urls.py ... 2.动态路由: path不可以使用正则表达式,而re_path和url可以。 2.1 re_path #网页http://127.0.0.1:8000/index/fasdf7/8985eu.html from django.urls import path,re_path urlpatterns = [ #以index开头,以html结束,w+是匹配字母数字下划线 re_path('^index/(w+)/(w+).html$',index), ] 位置参数:'^index/(w+)/(w+).html$' 前面的w+传给a1,后面的w+传给a2,按顺序传参。 def index(request,a1,a2): return HttpResponse('abc') 关键字参数:'^index/(?P<a1>w+)/(?P<a2>w+).html$' 前面的w+传给a1,后面的w+传给a2,按关键字传参。 def index(request,a1,a2): return HttpResponse('abc') 2.2 url 用法跟re_path一样,可参考上面代码。 from django.conf.urls import url urlpatterns = [ url('^index/(w+)/(w+).html$',index), ] 3.伪静态 re_path('^index/(w+)/(w+).html$',index), 静态网站:内容固定,不用到数据库里面获取数据就直接返回html,访问速度比较快。 url路径最后添加html就是伪静态,实际上很多网站(服务器)都是从数据库中获取数据的, 而最后添加html为了提高seo排名,优化搜索。 4.根据名称反向生成url,用于设置权限。 4.1 设置位置参数 urlpatterns = [ re_path('^index/(w+)/(w+).html$',index,name='ind'),#name='ind'是名称 ] def index(request,a1,a2): #v = reverse('ind',a1,a2)是获取url v = reverse('ind',args=('abc','def'))#设置参数,args是元祖,a1对应abc,a2对应def print(v) # /index/abc/def.html return HttpResponse('abc') 4.2 设置关键字参数 urlpatterns = [ re_path('^index/(?P<a1>w+)/(?P<a2>w+).html$',index,name='ind'), ] def index(request,a1,a2): v = reverse('ind',kwargs={'a1':'abc','a2':'def'})#设置参数 print(v) # /index/abc/def.html return HttpResponse('abc') 4.3 模板替换 urlpatterns = [ re_path('^index/(?P<a1>w+)/(?P<a2>w+).html$',index,name='ind'), ] def index(request,a1,a2): return render(request,'index.html',{'a1':a1,'a2':a2}) index.html里的特殊字符 {% url 'ind' a1 a2 %} 输入 http://127.0.0.1:8000/index/111/222.html 返回 /app01/index/111/222.html 可以在函数里面利用reverse反向生成url,然后放在列表里面, 最后把这个列表替换到模板里面进行for循环拿到所有url返回给浏览器。