成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django搭建個(gè)人博客:編寫文章詳情頁面

dabai / 3692人閱讀

摘要:有了文章列表頁面后,當(dāng)然還需要詳情頁面,方便用戶對(duì)某一篇感興趣的文章深入閱讀。編寫視圖函數(shù)打開,增加文章詳情頁面的視圖函數(shù)文章詳情取出相應(yīng)的文章需要傳遞給模板的對(duì)象載入模板,并返回對(duì)象函數(shù)中多了這個(gè)參數(shù)。

有了文章列表頁面后,當(dāng)然還需要詳情頁面,方便用戶對(duì)某一篇感興趣的文章深入閱讀。

編寫視圖函數(shù)

打開article/views.py,增加文章詳情頁面的視圖函數(shù)article_detail()

article/views.py

...

# 文章詳情
def article_detail(request, id):
    # 取出相應(yīng)的文章
    article = ArticlePost.objects.get(id=id)
    # 需要傳遞給模板的對(duì)象
    context = { "article": article }
    # 載入模板,并返回context對(duì)象
    return render(request, "article/detail.html", context)

article_detail(request, id)函數(shù)中多了id這個(gè)參數(shù)。注意我們?cè)趯憁odel的時(shí)候并沒有寫叫做id的字段,這是Django自動(dòng)生成的用于索引數(shù)據(jù)表的主鍵(Primary Key,即pk)。有了它才有辦法知道到底應(yīng)該取出哪篇文章。

ArticlePost.objects.get(id=id)意思是在所有文章中,取出id值相符合的唯一的一篇文章。

然后編寫article/urls.py,配置路由地址:

article/urls.py

...

urlpatterns = [
    ...
    
    # 文章詳情
    path("article-detail//", views.article_detail, name="article_detail"),
]

:Django2.0的path新語法用尖括號(hào)<>定義需要傳遞的參數(shù)。這里需要傳遞名叫id的整數(shù)到視圖函數(shù)中去。

重申一下老版本的Django是沒有path語法的。

編寫模板

templates/article/中新建detail.html文件,編寫如下代碼:

templates/article/detail.html


{% extends "base.html" %}
{% load staticfiles %}


{% block title %}
    文章詳情
{% endblock title %}


{% block content %}


{{ article.title }}

作者:{{ article.author }}

{{ article.body }}

{% endblock content %}

這里我們用{{ article.xxx }}取出了文章標(biāo)題、作者以及正文。

前面我們已經(jīng)通過后臺(tái)創(chuàng)建了幾篇文章,這里將取出id為1的一篇文章測(cè)試效果。

運(yùn)行開發(fā)服務(wù)器后,在瀏覽器中輸入http://127.0.0.1:8000/article/article-detail/1/

優(yōu)化網(wǎng)頁入口

雖然已經(jīng)實(shí)現(xiàn)了文章詳情功能,但是通過輸入url訪問的方式實(shí)在太不友好。

改寫header.html,讓用戶可通過導(dǎo)航欄右側(cè)的文章鏈接返回首頁:

templates/header.html

...


...

注意看這里href是如何改寫的:

href定義了鏈接跳轉(zhuǎn)的地址

{% url "..." %}是Django規(guī)定的語法,用于指明具體地址

關(guān)于其中的"article:article_list"的解釋:

前面的article是在項(xiàng)目根目錄的urls.py中定義的app的名稱

后面的article_list是在app中的urls.py中定義的具體的路由地址

通過這樣的方法就將鏈接跳轉(zhuǎn)的指向給配置好了,只要對(duì)應(yīng)url的名稱不變,url本身無論怎么變化,Django都可以解析到正確的地址,很靈活。

當(dāng)然你也可以直接在href中寫入url的地址,但是一旦url有變化,所有相關(guān)的鏈接都會(huì)失效,降低維護(hù)性。

然后再改寫list.html,讓用戶可點(diǎn)擊閱讀本文按鈕進(jìn)入文章詳情:

templates/article/list.html

...



...

留意文章的id是如何傳遞的:

list.html中,通過href="{% url "article:article_detail" article.id %}",將id傳遞給article/urls.py

article/urls.py中,通過傳遞給視圖函數(shù)article_detail()

在視圖函數(shù)article_detail()中,通過形參id取得了文章的id值,并進(jìn)行處理,最終定位了需要獲取的文章對(duì)象

現(xiàn)在我們可以通過鏈接訪問網(wǎng)站上的不同頁面了,而不需要手動(dòng)輸入url。當(dāng)然這也是現(xiàn)代網(wǎng)站的基礎(chǔ)。

總結(jié)

現(xiàn)在我們也擁有查看文章詳情的功能了,并且優(yōu)化了網(wǎng)頁切換的體驗(yàn)。

下一章將學(xué)習(xí)使用Markdown語法對(duì)文章正文進(jìn)行排版。

有疑問請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。

或Email私信我:[email protected]

項(xiàng)目完整代碼:Django_blog_tutorial

轉(zhuǎn)載請(qǐng)告知作者并注明出處。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42488.html

相關(guān)文章

  • Django搭建個(gè)人博客:在博文中發(fā)表評(píng)論

    摘要:確認(rèn)創(chuàng)建成功后,記得在中注冊(cè)因?yàn)槲覀兿腼@示發(fā)表評(píng)論的時(shí)間,修改時(shí)區(qū)設(shè)置為上海的時(shí)區(qū)。處理錯(cuò)誤請(qǐng)求發(fā)表評(píng)論僅接受請(qǐng)求。返回到一個(gè)適當(dāng)?shù)闹屑从脩舭l(fā)送評(píng)論后,重新定向到文章詳情頁面??偨Y(jié)本章實(shí)現(xiàn)了發(fā)表評(píng)論展示評(píng)論的功能。 在沒有互聯(lián)網(wǎng)的年代,我們用日記來記錄每天的心得體會(huì)。小的時(shí)候我有一個(gè)帶鎖的日記本,生怕被別人看見里面寫了啥,鑰匙藏得那叫一個(gè)絕。 現(xiàn)在時(shí)代變了,網(wǎng)絡(luò)版的日記本:博客,卻巴不...

    Jinkey 評(píng)論0 收藏0
  • Django搭建個(gè)人博客編寫刪除文章功能

    摘要:既然有了寫文章的功能,那當(dāng)然也必須要有刪除文章的功能了。編寫基本功能有了之前的學(xué)習(xí)做鋪墊,刪除文章實(shí)現(xiàn)起來就比較簡單了。保存所有文件后刷新頁面,很好,達(dá)到了理想的效果總結(jié)本章新增了刪除博客文章的功能,并且使用了彈窗組件優(yōu)化了用戶體驗(yàn)。 既然有了寫文章的功能,那當(dāng)然也必須要有刪除文章的功能了。 編寫基本功能 有了之前的學(xué)習(xí)做鋪墊,刪除文章實(shí)現(xiàn)起來就比較簡單了。 首先增加一個(gè)視圖函數(shù): a...

    Chaz 評(píng)論0 收藏0
  • Django搭建個(gè)人博客:使用 Bootstrap 4 改寫模板文件

    上一章我們的網(wǎng)站頁面實(shí)在太粗糙,你肯定不會(huì)拿來做真正的博客首頁。因此這章我們要借助Bootstrap的力量,改寫一個(gè)大氣的博客。 配置Bootstrap 4 Bootstrap是用于網(wǎng)站開發(fā)的開源前端框架(前端指的是展現(xiàn)給最終用戶的界面),它提供字體排印、窗體、按鈕、導(dǎo)航及其他各種組件,旨在使動(dòng)態(tài)網(wǎng)頁和Web應(yīng)用的開發(fā)更加容易。 Bootstrap有幾個(gè)版本都比較流行,我們選擇最新版本的Boots...

    lolomaco 評(píng)論0 收藏0
  • Django搭建個(gè)人博客:使用Markdown語法書寫文章

    摘要:重新打開一個(gè)命令行窗口,進(jìn)入虛擬環(huán)境,安裝是一種通用語法高亮顯示器,可以幫助我們自動(dòng)生成美化代碼塊的樣式文件。 上一章我們實(shí)現(xiàn)了文章詳情頁面。為了讓文章正文能夠進(jìn)行標(biāo)題、加粗、引用、代碼塊等不同的排版(像在Office中那樣!),我們將使用Markdown語法。 安裝Markdown Markdown是一種輕量級(jí)的標(biāo)記語言,它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉(zhuǎn)換成有效的或...

    沈建明 評(píng)論0 收藏0
  • Django搭建個(gè)人博客:渲染Markdown文章目錄

    摘要:博文也是同樣的,好的目錄對(duì)博主和讀者都很有幫助。文中的目錄之前我們已經(jīng)為博文支持了語法,現(xiàn)在繼續(xù)增強(qiáng)其功能。修改文章詳情視圖文章詳情目錄擴(kuò)展僅僅是將將擴(kuò)展添加了進(jìn)去。通過將目錄傳遞給模板。 對(duì)會(huì)讀書的人來說,讀一本書要做的第一件事,就是仔細(xì)閱讀這本書的目錄。閱讀目錄可以對(duì)整體內(nèi)容有所了解,并清楚地知道感興趣的部分在哪里,提高閱讀質(zhì)量。 博文也是同樣的,好的目錄對(duì)博主和讀者都很有幫助。更...

    Bamboy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<