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的路由层的主要内容,如果未能解决你的问题,请参考以下文章

Django的路由层

Django的路由层

Django视图层之路由配置系统(urls)

Django的路由层(urlconf)

Django的路由层

关于Django中路由层(URL-conf)