Django(命名空间)
Posted mjiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django(命名空间)相关的知识,希望对你有一定的参考价值。
命名空间
命名空间(英语:Namespace)是表示标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。 由于name没有作用域,Django在反解URL时,会在项目全局顺序搜索,当查找到第一个name指定URL时,立即返回 我们在开发项目时,会经常使用name属性反解出URL,当不小心在不同的app的urls中定义相同的name时,可能会导致URL反解错误,为了避免这种事情发生,引入了命名空间。
项目urls.py
from django.urls import path from myapp import views from django.conf.urls.static import static from django.conf import settings from django.conf.urls import re_path,include from myapp import * from myapp02 import * urlpatterns = [ # path(‘admin/‘, admin.site.urls), path(‘hello/‘,views.hello), path(‘login/‘,views.login,name =‘Log‘ ), re_path(r"^myapp/",include(("myapp.urls","myapp"))), #这里记住是元组,然后后面是名称 re_path(r"^myapp02/",include(("myapp02.urls","myapp02"))), ]+ static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
app1 urls.py
#!/usr/bin/env python # -*- coding:utf-8 -*- from django.conf.urls import url from myapp import views from django.urls import re_path urlpatterns = [ re_path(r‘^index/‘,views.index,name=‘index‘), url(r‘^hello/([0-9]{4})/$‘, views.year_archive,name=‘y‘), url(r‘^hello/([0-9]{4})/([0-9]{2})/$‘, views.month_archive), url(r‘^hello/([0-9]{4})/([0-9]{2})/([0-9]+)/$‘, views.article_detail), ]
app1 views.py
from django.shortcuts import render from django.http import HttpResponse from django.urls import reverse # Create your views here. # request 是固定写法 def index(request): return HttpResponse(reverse("myapp:index"))
app2 urls.py
#!/usr/bin/env python # -*- coding:utf-8 -*- from myapp02 import views from django.urls import re_path urlpatterns = [ re_path(r‘^index/‘,views.index,name=‘index‘), ]
app2 views.py
from django.http import HttpResponse from django.urls import reverse def index(request): return HttpResponse(reverse("myapp02:index"))
以上是关于Django(命名空间)的主要内容,如果未能解决你的问题,请参考以下文章