url的設計
/usrname/article/1
/用戶名/article/文章主鍵值
re_path(r'^(?P<username>\w+)/article/(?P<article_id>\d+)/$',views.article_detail,name='detail'),
視圖函式的設計
# 七、文章詳情頁
def article_detail(request,username,article_id):
# 是為了文章詳情頁站點的標題能夠有顯示
user_obj = models.UserInfo.objects.filter(username=username).first()
blog = user_obj.blog
# 1.先驗證當前的url是否可以使用,以防被上方的url頂替
# return HttpResponse('ok')
# 2.獲取當前的文章物件,注意在這之前可以先判斷一下用戶輸入的username、article_id是否存在,不存在保錯
# 注意這里需要加一個用戶名引數,以防用戶名不對時也可以訪問到主鍵為1的文章
article_obj = models.Article.objects.filter(pk=article_id,blog__userinfo__username=username).first()
if not article_obj:
return render(request,'error.html')
return render(request,'article_detail.html',locals())
前端文章詳情頁設計
{% extends 'base.html' %} # 個人站點頁面和文章詳情頁都繼承自base頁面
{% block content %}
<h3 >{{ article_obj.title }}</h3>
<div >
{{ article_obj.content }}
</div>
{% endblock %}
這里繼承之后,右側的側邊欄就不見了,需要將側邊欄需要的資料在匯入到文章詳情的視圖函式,但是這往往比較麻煩,
所有,我們可以將文章詳情頁制成一個inclusion_tag,方便后面需要側邊欄的時候直接匯入進行!詳見將側邊欄制成inclusion_tag
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511030.html
標籤:其他
上一篇:驅動開發:判斷自身是否加載成功
下一篇:Java基礎合集
