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

Django的路由层

时间:2018-09-11 21:27:21      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:hive   一段   使用   dex   archive   顺序   import   含义   指定   

https://www.cnblogs.com/yuanchenqi/articles/8876685.html

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行。

简单的路由配置
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r^articles/2003/$, views.special_case_2003),
    url(r^articles/([0-9]{4})/$, views.year_archive),
    url(r^articles/([0-9]{4})/([0-9]{2})/$, views.month_archive),
    url(r^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$, views.article_detail),
]

命名空间(英语:Namespace)是表示标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。

由于name没有作用域,Django在反解URL时,会在项目全局顺序搜索,当查找到第一个name指定URL时,立即返回我们在开发项目时,会经常使用name属性反解出URL,当不小心在不同的app的urls中定义相同的name时,可能会导致URL反解错误,为了避免这种事情发生,引入了命名空间。

project的urls.py:
    urlpatterns = [
        url(r^admin/, admin.site.urls),
        url(r^app01/, include("app01.urls",namespace="app01")),
        url(r^app02/, include("app02.urls",namespace="app02")),
    ]

app01.urls:
    urlpatterns = [
        url(r^index/, index,name="index"),
    ]    

app02.urls:
    urlpatterns = [
        url(r^index/, index,name="index"),
    ]

app01.views 
from django.core.urlresolvers import reverse
    def index(request):

        return  HttpResponse(reverse("app01:index"))

app02.views
from django.core.urlresolvers import reverse
    def index(request):

        return  HttpResponse(reverse("app02:index"))

 

Django的路由层

标签:hive   一段   使用   dex   archive   顺序   import   含义   指定   

原文地址:https://www.cnblogs.com/larken/p/9629851.html

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