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(命名空间)的主要内容,如果未能解决你的问题,请参考以下文章

Django(命名空间)

Django 管理员 - jQuery 命名空间

django url中的实例命名空间和应用程序命名空间有啥区别?

Django命名空间app_name和namespace

Django:使用变量作为 URL 命名空间?

django中的静态文件命名空间