django 链接地址匹配流程
生活随笔
收集整理的這篇文章主要介紹了
django 链接地址匹配流程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前提:
?
代碼結(jié)構(gòu)
?
?
步驟一:
下面為某個網(wǎng)頁的鏈接地址
<body> {% if latest_article_list %}<ul>{% for article in latest_article_list %}<li><a href="/blog/p/{{ article.id }}/">{{ article.title }} </a></li>{% endfor %}</ul> {% else %}<p>No articles are available.</p> {% endif %}
其中的鏈接地址為:
<a href="/blog/p/{{ article.id }}/">{{ article.title }} </a>
步驟二:
點(diǎn)擊鏈接后,進(jìn)行URL匹配。
第一層 mysite中的url.py
urlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'^blog/',include('blog.urls')) ]
第二層 blog中的url.py
urlpatterns = [url(r'^$', views.index, name='index'),url(r'^p/(?P<article_id>[0-9]+)/$', views.detail,name='detail') ]
?
步驟三:
然后調(diào)用view.detail ?(在view.py中)
def detail(request, article_id):article = get_object_or_404(Article, pk=article_id)return render(request, 'blog/p/detail.html', {'article': article})
?
步驟四:
然后返回 目錄 blog/p/detail.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>ARTICLE</title> </head> <body> <h1>{{ article.title }}</h1> <p>{{ article.content }}</p> </body> </html>
根據(jù)article.id值在數(shù)據(jù)庫中查找相應(yīng)字段,填充article.title和article.content的具體值。
效果:
?
需要注意的是地址欄為:
而不是detail.html的目錄
?
移除硬編碼
?
html文件中的鏈接 <a href="/blog/p/{{ article.id }}/">{{ article.title }} </a>
blog中的url.py文件有name參數(shù) urlpatterns = [url(r'^$', views.index, name='index'),url(r'^p/(?P<article_id>[0-9]+)/$', views.detail,name='detail') ]
所以使用{% url %}標(biāo)簽,鏈接改為
<a href="{% url 'detail' article.id }">{{ article.title }} </a>
處理多個項(xiàng)目出現(xiàn)相同的detail,使用命名空間 在mysite的url中設(shè)置
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/',include('blog.urls', namespace='blog'))
]
鏈接改為
<a href="{% url 'blog:detail' article.id }">{{ article.title }} </a> ?
轉(zhuǎn)載于:https://www.cnblogs.com/hb91/p/5410660.html
總結(jié)
以上是生活随笔為你收集整理的django 链接地址匹配流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亚比军团的属性在竞技PK时有效吗?
- 下一篇: javascript与浏览器学习(一)