摘要:所以,讓我們再接再厲,進入到博客開發進階教程,學習更多的開發技巧,為博客提供更多的功能吧總結本章節的代碼位于。在已知小問題修正追夢人物的博客的評論區留言。將問題的詳細描述通過郵件發送到,一般會在小時內回復。更多教程,請訪問追夢人物的博客。
在模型中指定排序
為了讓文章(Post)按發布時間逆序排列,即最新發表的文章排在文章列表的最前面,我們對返回的文章列表進行了排序,即各個視圖函數中都有類似于 Post.objects.all().order_by("-created_time") 這樣的代碼,這導致了很多重復。因為只要是返回的文章列表,基本都是逆序排列的,因此我們可以在 Post 模型中指定 Post 的自然排序方式。
Django 允許我們在 models.Model 的子類里定義一個 Meta 的內部類,這個內部類通過指定一些屬性來規定這個類該有的一些特性,例如在這里我們要指定 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): ...
現在在 Post 類的內部定義一個 Meta 類,并指定排序屬性:
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"] 指定了依據哪個屬性的值進行排序,這里指定為按照文章發布時間排序,且負號表示逆序排列。列表中可以用多個項,比如 ordering = ["-created_time", "title"] ,那么首先依據 created_time 排序,如果 created_time 相同,則再依據 title 排序。這樣指定以后所有返回的文章列表都會自動按照 Meta 中指定的順序排序,因此可以刪掉視圖函數中對文章列表中返回結果進行排序的代碼了。
完善跳轉鏈接導航欄有一個 Black & White 的 Logo,我們希望點擊它就能回到首頁面,只修修改一下超鏈接即可。打開 base.html,修改 Logo 處的超鏈接:
...
另外導航欄還有一個首頁導航按鈕,也希望點擊它就能回到首頁面,修改的任務作為練習交給你了。
當然還有一些跳轉可以完善,比如文章標題下有分類、發布時間、作者、評論量、閱讀量等信息,可以設置點擊分類跳轉到分類頁面;點擊評論量就跳轉到文章詳情頁的評論處等,這些細節部分不涉及新知識,就當做練習交給你自己完成了。
顯示正確的評論量有兩處地方顯示的評論量,顯示評論量的方法很簡單。回顧一下我們是如何獲取某篇 post 的下的評論列表的?我們使用的是 post.comment_set.all()。all 方法返回該 post 關聯的評論列表。此外模型管理器(comment_set 是一個特殊的模型管理器)還有一個 count 方法,返回的是數量,即 post 下有多少條評論,我們可以直接在模板中調用這個方法:{{ post.comment_set.count }}。將評論量替換成該模板變量就可以正確顯示文章的評論數了。
結束了么我們通過一個博客實戰項目,了解了 Django 基本的開發技術。包括如何編寫模型(Model)、如何編寫視圖函數(View)、如何使用 Django 內置的模板系統(Template)以及如何配置路由(URL),這四大模塊是 Django 開發的核心所在,現在我們已經能夠基本掌握這些模塊的使用方法了。
但是,還沒完...
Django 提供的不僅僅是這些,我們的博客也不僅僅只有這些功能。如何實現標簽云效果?如何給博客提供 RSS 訂閱服務?如果實現文章搜索?如果網站需要提供用戶系統,如何實現用戶的注冊登錄?如何部署到服務器上讓他人通過公網訪問?這些需求都可以利用 Django 提供的 API 來實現。
另外,Django 還有海量的第三方應用來提供更加豐富的功能。比如當他人評論了我的文章時,如何收到通知提醒?網站需要提供新浪微博、微信等社交賬號的登錄等等,這些都可以借助 Django 第三方應用快速完成,而我們自己只需要寫很少量的代碼就可以了。
所以,讓我們再接再厲,進入到 Django 博客開發進階教程,學習更多的 Django 開發技巧,為博客提供更多的功能吧!
總結本章節的代碼位于:Step13: fix some issues。
如果遇到問題,請通過下面的方式尋求幫助。
在 已知小問題修正- 追夢人物的博客 的評論區留言。
將問題的詳細描述通過郵件發送到 djangostudyteam@163.com,一般會在 24 小時內回復。
更多Django 教程,請訪問 追夢人物的博客。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44416.html
摘要:修改某一個組件可能會導致另一個組件出現意想不到的,但是在人工測試時卻很難檢查出來,總不能每寫幾行代碼就把整個網站統統檢查一遍吧。比如說有個功能,限制每個用戶每天發表評論不能超過條,人工測試就顯得比較麻煩,特別是需要反復調試的時候。 測試是伴隨著開發進行的,開發有多久,測試就要多久。本教程已經進行了30多章了,都是如何測試的?當然是runserver啦!每當開發新功能后,都需要運行服務器...
摘要:我們的博客側邊欄有四項內容最新文章歸檔分類和標簽云。更好的解決方案是直接在模板中獲取,為此,我們使用的一個新技術自定義模板標簽來完成任務。注意要在使用任何下的模板標簽以前導入它。在頁面側邊欄使用自定義模板標簽追夢人物的博客的評論區留言。 我們的博客側邊欄有四項內容:最新文章、歸檔、分類和標簽云。這些內容相對比較固定,且在各個頁面都會顯示,如果像文章列表或者文章詳情一樣,從視圖函數中獲取...
摘要:創建了數據庫模型就要遷移數據庫,遷移數據庫的命令也在前面講過。如果表單對應有一個數據庫模型例如這里的評論表單對應著評論模型,那么使用類會簡單很多,這是為我們提供的方便。表明這個表單對應的數據庫模型是類。 創建評論應用 相對來說,評論其實是另外一個比較獨立的功能。Django 提倡,如果功能相對比較獨立的話,最好是創建一個應用,把相應的功能代碼寫到這個應用里。我們的第一個應用叫 blog...
摘要:教程的開發環境本教程的開發環境為位為了避免開發環境不同而導致的錯誤,建議讀者使用相同的版本。新建一個文件夾,教程中為。運行服務器非常幸運,自帶一個輕量的開發服務器,也被叫做。市面上有很多的代碼編輯器或者集成開發環境可以選擇。 教程的開發環境 本教程的開發環境為: Win 10(64位) Python 3.7.0 Django 2.1 為了避免開發環境不同而導致的錯誤,建議讀者使用相...
摘要:教程看到這里,你已經學會如下內容搭建開發環境博文管理用戶管理發表評論若干小功能搭建簡單的小博客,以上的功能夠用了。教程為了起步平緩,沒有展開這方面的內容。陌生人,祝你學業進步事業有成歡迎常到杜賽的個人網站做客 教程看到這里,你已經學會如下內容: 搭建開發環境 博文管理 用戶管理 發表評論 若干小功能 搭建簡單的小博客,以上的功能夠用了。 相信你的志向不止于此。畢竟程序員面試個個造火...
閱讀 3561·2023-04-26 02:10
閱讀 1299·2021-11-22 15:25
閱讀 1668·2021-09-22 10:02
閱讀 907·2021-09-06 15:02
閱讀 3469·2019-08-30 15:55
閱讀 600·2019-08-30 13:58
閱讀 2775·2019-08-30 12:53
閱讀 3042·2019-08-29 12:38