django的路由层
Posted augustyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django的路由层相关的知识,希望对你有一定的参考价值。
django的路由层
1 路由配置
① project的urls.py的操作
from app01 import views urlpatterns = [ path(‘admin/‘, admin.site.urls), # # 1路由配置: 路径-----> 视图函数 re_path(r‘^articles/2003/$‘,views.special_case_2003), # special_case_2003(request) re_path(r‘^articles/([0-9]{4})/$‘, views.year_archive), # year_archive(reauest,1999) re_path(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive), # year_archive(reauest,1999,11) ]
② app01 views.py 操作
from django.shortcuts import render,HttpResponse # HttpResponse 响应对象 def special_case_2003(request): return HttpResponse("special_case_2003") def year_archive(request,year): return HttpResponse(year) def month_archive(request,year,month): return HttpResponse(year+"-"+month)
2 有名分组
3 路由分发
4 名称空间
名称空间
命名空间(英语:Namespace)是表示标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。
由于name没有作用域,Django在反解URL时,会在项目全局顺序搜索,当查找到第一个name指定URL时,立即返回
我们在开发项目时,会经常使用name属性反解出URL,当在不同的app的urls中定义相同的name时 需要用到 名称空间。
① project的urls.py的操作
urlpatterns = [ re_path(r‘^admin/‘, admin.site.urls), # 名称空间 re_path(r"^app01/",include(("app01.urls","app01"))), re_path(r"^app02/",include(("app02.urls","app02"))), ]
② 不同的app urls操作
app01.urls urlpatterns = [ re_path(r‘^index/‘, views.index,name="index"), ] ---------------------------------------------------------------------- app02.urls urlpatterns = [ re_path(r‘^index/‘, views.index,name="index"), ]
③ 不同的app views操作
app01.views from django.shortcuts import render,HttpResponse from django.urls import reverse def index(reqeust): return HttpResponse(reverse("app01:index")) ---------------------------------------------------------------------- app02.views from django.shortcuts import render,HttpResponse from django.urls import reverse def index(reqeust): return HttpResponse(reverse("app02:index"))
5 反向解析
以上是关于django的路由层的主要内容,如果未能解决你的问题,请参考以下文章