码迷,mamicode.com
首页 > 其他好文 > 详细

django的路由层

时间:2019-11-07 13:28:08      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:pat   --   ret   import   spec   cut   名称空间   div   arch   

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的路由层

标签:pat   --   ret   import   spec   cut   名称空间   div   arch   

原文地址:https://www.cnblogs.com/augustyang/p/11811135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!