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

資訊專欄INFORMATION COLUMN

Django 博客開發(fā)教程 13 - 已知小問(wèn)題修正

bergwhite / 1686人閱讀

摘要:所以,讓我們?cè)俳釉賲?,進(jìn)入到博客開發(fā)進(jìn)階教程,學(xué)習(xí)更多的開發(fā)技巧,為博客提供更多的功能吧總結(jié)本章節(jié)的代碼位于。在已知小問(wèn)題修正追夢(mèng)人物的博客的評(píng)論區(qū)留言。將問(wèn)題的詳細(xì)描述通過(guò)郵件發(fā)送到,一般會(huì)在小時(shí)內(nèi)回復(fù)。更多教程,請(qǐng)?jiān)L問(wèn)追夢(mèng)人物的博客。

在模型中指定排序

為了讓文章(Post)按發(fā)布時(shí)間逆序排列,即最新發(fā)表的文章排在文章列表的最前面,我們對(duì)返回的文章列表進(jìn)行了排序,即各個(gè)視圖函數(shù)中都有類似于 Post.objects.all().order_by("-created_time") 這樣的代碼,這導(dǎo)致了很多重復(fù)。因?yàn)橹灰欠祷氐奈恼铝斜?,基本都是逆序排列的,因此我們可以?Post 模型中指定 Post 的自然排序方式。

Django 允許我們?cè)?models.Model 的子類里定義一個(gè) Meta 的內(nèi)部類,這個(gè)內(nèi)部類通過(guò)指定一些屬性來(lái)規(guī)定這個(gè)類該有的一些特性,例如在這里我們要指定 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)部定義一個(gè) 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 屬性用來(lái)指定文章排序方式,["-created_time"] 指定了依據(jù)哪個(gè)屬性的值進(jìn)行排序,這里指定為按照文章發(fā)布時(shí)間排序,且負(fù)號(hào)表示逆序排列。列表中可以用多個(gè)項(xiàng),比如 ordering = ["-created_time", "title"] ,那么首先依據(jù) created_time 排序,如果 created_time 相同,則再依據(jù) title 排序。這樣指定以后所有返回的文章列表都會(huì)自動(dòng)按照 Meta 中指定的順序排序,因此可以刪掉視圖函數(shù)中對(duì)文章列表中返回結(jié)果進(jìn)行排序的代碼了。

完善跳轉(zhuǎn)鏈接

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

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

當(dāng)然還有一些跳轉(zhuǎn)可以完善,比如文章標(biāo)題下有分類、發(fā)布時(shí)間、作者、評(píng)論量、閱讀量等信息,可以設(shè)置點(diǎn)擊分類跳轉(zhuǎn)到分類頁(yè)面;點(diǎn)擊評(píng)論量就跳轉(zhuǎn)到文章詳情頁(yè)的評(píng)論處等,這些細(xì)節(jié)部分不涉及新知識(shí),就當(dāng)做練習(xí)交給你自己完成了。

顯示正確的評(píng)論量

有兩處地方顯示的評(píng)論量,顯示評(píng)論量的方法很簡(jiǎn)單?;仡櫼幌挛覀兪侨绾潍@取某篇 post 的下的評(píng)論列表的?我們使用的是 post.comment_set.all()。all 方法返回該 post 關(guān)聯(lián)的評(píng)論列表。此外模型管理器(comment_set 是一個(gè)特殊的模型管理器)還有一個(gè) count 方法,返回的是數(shù)量,即 post 下有多少條評(píng)論,我們可以直接在模板中調(diào)用這個(gè)方法:{{ post.comment_set.count }}。將評(píng)論量替換成該模板變量就可以正確顯示文章的評(píng)論數(shù)了。

結(jié)束了么

我們通過(guò)一個(gè)博客實(shí)戰(zhàn)項(xiàng)目,了解了 Django 基本的開發(fā)技術(shù)。包括如何編寫模型(Model)、如何編寫視圖函數(shù)(View)、如何使用 Django 內(nèi)置的模板系統(tǒng)(Template)以及如何配置路由(URL),這四大模塊是 Django 開發(fā)的核心所在,現(xiàn)在我們已經(jīng)能夠基本掌握這些模塊的使用方法了。

但是,還沒(méi)完...

Django 提供的不僅僅是這些,我們的博客也不僅僅只有這些功能。如何實(shí)現(xiàn)標(biāo)簽云效果?如何給博客提供 RSS 訂閱服務(wù)?如果實(shí)現(xiàn)文章搜索?如果網(wǎng)站需要提供用戶系統(tǒng),如何實(shí)現(xiàn)用戶的注冊(cè)登錄?如何部署到服務(wù)器上讓他人通過(guò)公網(wǎng)訪問(wèn)?這些需求都可以利用 Django 提供的 API 來(lái)實(shí)現(xiàn)。

另外,Django 還有海量的第三方應(yīng)用來(lái)提供更加豐富的功能。比如當(dāng)他人評(píng)論了我的文章時(shí),如何收到通知提醒?網(wǎng)站需要提供新浪微博、微信等社交賬號(hào)的登錄等等,這些都可以借助 Django 第三方應(yīng)用快速完成,而我們自己只需要寫很少量的代碼就可以了。

所以,讓我們?cè)俳釉賲枺M(jìn)入到 Django 博客開發(fā)進(jìn)階教程,學(xué)習(xí)更多的 Django 開發(fā)技巧,為博客提供更多的功能吧!

總結(jié)

本章節(jié)的代碼位于:Step13: fix some issues。

如果遇到問(wèn)題,請(qǐng)通過(guò)下面的方式尋求幫助。

在 已知小問(wèn)題修正- 追夢(mèng)人物的博客 的評(píng)論區(qū)留言。

將問(wèn)題的詳細(xì)描述通過(guò)郵件發(fā)送到 [email protected],一般會(huì)在 24 小時(shí)內(nèi)回復(fù)。

更多Django 教程,請(qǐng)?jiān)L問(wèn) 追夢(mèng)人物的博客。

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

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

相關(guān)文章

  • Django搭建個(gè)人博客:自動(dòng)化測(cè)試

    摘要:修改某一個(gè)組件可能會(huì)導(dǎo)致另一個(gè)組件出現(xiàn)意想不到的,但是在人工測(cè)試時(shí)卻很難檢查出來(lái),總不能每寫幾行代碼就把整個(gè)網(wǎng)站統(tǒng)統(tǒng)檢查一遍吧。比如說(shuō)有個(gè)功能,限制每個(gè)用戶每天發(fā)表評(píng)論不能超過(guò)條,人工測(cè)試就顯得比較麻煩,特別是需要反復(fù)調(diào)試的時(shí)候。 測(cè)試是伴隨著開發(fā)進(jìn)行的,開發(fā)有多久,測(cè)試就要多久。本教程已經(jīng)進(jìn)行了30多章了,都是如何測(cè)試的?當(dāng)然是runserver啦!每當(dāng)開發(fā)新功能后,都需要運(yùn)行服務(wù)器...

    smallStone 評(píng)論0 收藏0
  • Django 博客開發(fā)教程 10 - 頁(yè)面?zhèn)冗厵冢菏褂米远x模板標(biāo)簽

    摘要:我們的博客側(cè)邊欄有四項(xiàng)內(nèi)容最新文章歸檔分類和標(biāo)簽云。更好的解決方案是直接在模板中獲取,為此,我們使用的一個(gè)新技術(shù)自定義模板標(biāo)簽來(lái)完成任務(wù)。注意要在使用任何下的模板標(biāo)簽以前導(dǎo)入它。在頁(yè)面?zhèn)冗厵谑褂米远x模板標(biāo)簽追夢(mèng)人物的博客的評(píng)論區(qū)留言。 我們的博客側(cè)邊欄有四項(xiàng)內(nèi)容:最新文章、歸檔、分類和標(biāo)簽云。這些內(nèi)容相對(duì)比較固定,且在各個(gè)頁(yè)面都會(huì)顯示,如果像文章列表或者文章詳情一樣,從視圖函數(shù)中獲取...

    summerpxy 評(píng)論0 收藏0
  • Django 博客開發(fā)教程 12 - 評(píng)論

    摘要:創(chuàng)建了數(shù)據(jù)庫(kù)模型就要遷移數(shù)據(jù)庫(kù),遷移數(shù)據(jù)庫(kù)的命令也在前面講過(guò)。如果表單對(duì)應(yīng)有一個(gè)數(shù)據(jù)庫(kù)模型例如這里的評(píng)論表單對(duì)應(yīng)著評(píng)論模型,那么使用類會(huì)簡(jiǎn)單很多,這是為我們提供的方便。表明這個(gè)表單對(duì)應(yīng)的數(shù)據(jù)庫(kù)模型是類。 創(chuàng)建評(píng)論應(yīng)用 相對(duì)來(lái)說(shuō),評(píng)論其實(shí)是另外一個(gè)比較獨(dú)立的功能。Django 提倡,如果功能相對(duì)比較獨(dú)立的話,最好是創(chuàng)建一個(gè)應(yīng)用,把相應(yīng)的功能代碼寫到這個(gè)應(yīng)用里。我們的第一個(gè)應(yīng)用叫 blog...

    wangbinke 評(píng)論0 收藏0
  • Django搭建個(gè)人博客教程開發(fā)環(huán)境

    摘要:教程的開發(fā)環(huán)境本教程的開發(fā)環(huán)境為位為了避免開發(fā)環(huán)境不同而導(dǎo)致的錯(cuò)誤,建議讀者使用相同的版本。新建一個(gè)文件夾,教程中為。運(yùn)行服務(wù)器非常幸運(yùn),自帶一個(gè)輕量的開發(fā)服務(wù)器,也被叫做。市面上有很多的代碼編輯器或者集成開發(fā)環(huán)境可以選擇。 教程的開發(fā)環(huán)境 本教程的開發(fā)環(huán)境為: Win 10(64位) Python 3.7.0 Django 2.1 為了避免開發(fā)環(huán)境不同而導(dǎo)致的錯(cuò)誤,建議讀者使用相...

    WrBug 評(píng)論0 收藏0
  • Django搭建個(gè)人博客:結(jié)束和開始

    摘要:教程看到這里,你已經(jīng)學(xué)會(huì)如下內(nèi)容搭建開發(fā)環(huán)境博文管理用戶管理發(fā)表評(píng)論若干小功能搭建簡(jiǎn)單的小博客,以上的功能夠用了。教程為了起步平緩,沒(méi)有展開這方面的內(nèi)容。陌生人,祝你學(xué)業(yè)進(jìn)步事業(yè)有成歡迎常到杜賽的個(gè)人網(wǎng)站做客 教程看到這里,你已經(jīng)學(xué)會(huì)如下內(nèi)容: 搭建開發(fā)環(huán)境 博文管理 用戶管理 發(fā)表評(píng)論 若干小功能 搭建簡(jiǎn)單的小博客,以上的功能夠用了。 相信你的志向不止于此。畢竟程序員面試個(gè)個(gè)造火...

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

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

0條評(píng)論

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