14. 已知小問題修正

本教程內(nèi)容已過時(shí)陨献,更新版教程請?jiān)L問: Django 博客開發(fā)入門教程

文章按發(fā)布時(shí)間逆序排列

有的朋友已經(jīng)注意到了,目前文章列表的顯示順序是按照發(fā)布時(shí)間順序排列的慕趴,最新發(fā)布的文章排在最后,這不符合習(xí)慣鄙陡。正確的排列方式應(yīng)該是按發(fā)布時(shí)間逆序排列冕房,即最新發(fā)表的文章應(yīng)該顯示在最前面。要實(shí)現(xiàn)這種排列方式有兩種方法趁矾。

首先看到我們的首頁視圖函數(shù):

blog/views.py

def index(request):
    post_list = Post.objects.all()
    return render(request, 'blog/index.html', context={'post_list': post_list})

首頁視圖函數(shù)的功能是從數(shù)據(jù)庫獲取到全部文章的列表耙册,然后渲染首頁模板以顯示這些文章數(shù)據(jù)。我們通過 Post.objects.all() 獲取到全部文章數(shù)據(jù)毫捣,這個方法返回一個類似于列表一樣的數(shù)據(jù)結(jié)構(gòu)详拙。通過調(diào)用 order_by 方法可以對其進(jìn)行排序帝际,即把首頁視圖函數(shù)的代碼改成:

blog/views.py

def index(request):
    post_list = Post.objects.all().order_by('-created_time')
    return render(request, 'blog/index.html', context={'post_list': post_list})

我們根據(jù) Post 的 created_time 屬性的值進(jìn)行排序,前面的負(fù)號表示逆序排列饶辙,不加負(fù)號則是正常的正序排列蹲诀。

這是首頁的文章列表的,另外我們還有某一分類下的文章列表弃揽,以及歸檔下的文章列表脯爪。同理我們可以在相應(yīng)的視圖函數(shù)里把獲取到的文章列表按照上述方式排序即可。但我們也會發(fā)現(xiàn)每個地方都要加上這么一個排序方法顯得很麻煩矿微。因此我們介紹第二種排序方式痕慢,使用 Post 的 Meta 屬性。

django 允許我們在 models.Model 的子類里定義一個 Meta 的內(nèi)部類涌矢,這個內(nèi)部類通過指定一些屬性來規(guī)定這個類本該有的一些特性掖举,例如在這里我們要指定 Post 的排序方式。首先看到 Post 的代碼:

blog/models.py

@python_2_unicode_compatible
class Post(models.Model):
    ...
    created_time = models.DateTimeField()
    ...

    def __str__(self):
        ...
        
    def get_absolute_url(self):
        ...

現(xiàn)在在 Post 類的內(nèi)部定義一個 Meta 類娜庇,并指定排序?qū)傩裕?/p>

blog/models.py

@python_2_unicode_compatible
class Post(models.Model):
    ...
    created_time = models.DateTimeField()
    ...

    def __str__(self):
        ...
        
    def get_absolute_url(self):
        ...
    
    class Meta:
        ordering = ['-created_time']

這里 ordering 屬性用來指定文章排序方式塔次,['-created_time'] 指定了依據(jù)哪個屬性的值進(jìn)行排序,這里指定了文章發(fā)布時(shí)間思灌,且負(fù)號表示逆序排列俺叭。這里列表中可以用多個項(xiàng),比如 ordering = ['-created_time', 'title'] 泰偿,那么首先會依據(jù) created_time 排序熄守,如果 created_time 的值相同,則再依據(jù) title 排序耗跛。

此后所有返回的文章列表都會自動按照 Meta 中指定的順序排序了裕照。

一些腳本文件忘了修改 static 標(biāo)簽

我們前面通過 {% static %} 標(biāo)簽來引入 css 和 js 文件,但是前面的教程漏掉了一些 js 文件的引入调塌,導(dǎo)致點(diǎn)擊導(dǎo)航欄處的搜索按鈕無效晋南,這里修復(fù)一下。打開 base.html 文件羔砾,修改文件最底部處的一個 js 文件引用:

base.html

...
<body>
...
- <script src="js/script.js"></script>
+ <script src="{% static 'blog/js/script.js' %}"></script>
</body>

完善一些跳轉(zhuǎn)鏈接

導(dǎo)航欄有一個 Black & White 的 Logo负间,我們希望點(diǎn)擊它就能回到首頁面,只修修改一下超鏈接即可姜凄。打開 base.html政溃,修改 Logo 處的超鏈接:

<header id="site-header">
  <div class="row">
      <div class="logo">
        - <h1><a href="index.html"><b>Black</b> & White</a></h1>
        + <h1><a href="{% url 'blog:index' %}"><b>Black</b> & White</a></h1>
      </div>
  ...
  </div>
</header>

另外導(dǎo)航欄還有一個 Home 導(dǎo)航按鈕,也希望點(diǎn)擊它就能回到首頁面态秧,修改的任務(wù)作為練習(xí)交給你了董虱。

結(jié)束語

感謝大家的支持,django 博客開發(fā)入門教程在這里就全部結(jié)束了。

但是愤诱,還沒完...

通過大家的反饋云头,教程暴露了很多的問題,這是我個人水平問題造成的淫半。我會根據(jù)大家的反饋持續(xù)修正教程的內(nèi)容溃槐,使其更加完善,盡可能地為后來的學(xué)習(xí)者掃除學(xué)習(xí)障礙撮慨。

另外竿痰,由于本教程定位為面向零基礎(chǔ)的 django 入門開發(fā)者,所以涉及的內(nèi)容有限砌溺,博客實(shí)現(xiàn)的功能也很單一。像如何部署博客到服務(wù)器变隔、實(shí)現(xiàn)博客文章列表分頁规伐、全文搜索、標(biāo)簽等都沒有涉及匣缘。關(guān)于這方面的內(nèi)容我會寫到另一專題中猖闪,并發(fā)布到我的個人博客:追夢人物的博客。本博客也會持續(xù)更新和 django 開發(fā)有關(guān)的其它話題肌厨,如果你要進(jìn)一步學(xué)習(xí) django 開發(fā)的話培慌,請關(guān)注我的個人博客。

和其它 django 開發(fā)者交流也是學(xué)好 django 的重要途徑柑爸,這里匯集了大量經(jīng)驗(yàn)豐富的 django 開發(fā)者吵护,他們能在你學(xué)習(xí) django 時(shí)為你提供有價(jià)值的幫助,期待你的加入表鳍。

django 學(xué)習(xí)小組 QQ 群:561422498

django 學(xué)習(xí)交流論壇:Python 中文社

django 學(xué)習(xí)小組郵件列表:django_study@groups.163.com

django 博客:追夢人物的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馅而,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子譬圣,更是在濱河造成了極大的恐慌瓮恭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厘熟,死亡現(xiàn)場離奇詭異屯蹦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绳姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門登澜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人就缆,你說我怎么就攤上這事帖渠。” “怎么了竭宰?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵空郊,是天一觀的道長份招。 經(jīng)常有香客問我,道長狞甚,這世上最難降的妖魔是什么锁摔? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮哼审,結(jié)果婚禮上谐腰,老公的妹妹穿的比我還像新娘。我一直安慰自己涩盾,他們只是感情好十气,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著春霍,像睡著了一般砸西。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上址儒,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天芹枷,我揣著相機(jī)與錄音,去河邊找鬼莲趣。 笑死鸳慈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喧伞。 我是一名探鬼主播走芋,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼絮识!你這毒婦竟也來了绿聘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤次舌,失蹤者是張志新(化名)和其女友劉穎熄攘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彼念,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挪圾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逐沙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哲思。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吩案,靈堂內(nèi)的尸體忽然破棺而出棚赔,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布靠益,位于F島的核電站丧肴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏胧后。R本人自食惡果不足惜芋浮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壳快。 院中可真熱鬧纸巷,春花似錦、人聲如沸眶痰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凛驮。三九已至裆站,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黔夭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工羽嫡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留本姥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓杭棵,卻偏偏與公主長得像婚惫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子魂爪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容