如玉的白玫瑰冰雪纯洁,闪烁着月光般寒冷的色彩玫瑰乱舞,勾勒出你的身形,你的容貌。想看日出,想看日落,想看世间每一处角落。
新建一个项目 app02
在 app02/ 下创建 urls.py:
from django.conf.urls import url from app02 import views urlpatterns = [ url(r'^blog/', views.test, name="blog"), ]
app01/urls.py:
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^blog/', views.blog, name="blog"), ]
这两个都有 blog/ 路径,且都名为 blog,访问的话就不知道该访问哪一个
这时候需要用到命名空间
在 templates 目录下创建 /books/blog.html 和 /news/blog.html
app01/views.py:
from django.shortcuts import render def test(request): return render(request, "test.html") def blog(request): return render(request, "news/blog.html") # news 前不要加 /
app02/views.py:
from django.shortcuts import render def test(request): return render(request, "books/blog.html") # books 前不要加 /
mysite2/urls.py:
from django.conf.urls import url, include from app01 import views from app01 import urls as app01_urls from app02 import urls as app02_urls urlpatterns = [ url(r'^test/', views.test), url(r'^blog/', include(app01_urls, namespace="news")), url(r'^blog/', include(app02_urls, namespace="books")), ]
test.html:
<a rel="nofollow noopener noreferrer" href="{% url 'books:blog' %}" rel="external nofollow" >书籍</a> <a rel="nofollow noopener noreferrer" href="{% url 'news:blog' %}" rel="external nofollow" >新闻</a>
这里用的是 namespace_name 格式来获取 url 路径
访问:http://127.0.0.1:8000/test/
点击“新闻”
跳到了:http://127.0.0.1:8000/blog/blog/,返回的是 /news/blog.html 页面
本文Python Django 命名空间模式的实现到此结束。要纠正别人之前,先反省自我有没有犯错。小编再次感谢大家对我们的支持!