国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django搭建個人博客:設置文章的欄目

keelii / 1337人閱讀

摘要:而文章分類一個重要的途徑就是設置欄目。修改文件欄目的欄目標題創(chuàng)建時間文章欄目的一對多外鍵欄目的有兩個字段,名稱和創(chuàng)建日期。修改文章的欄目功能,也就完成了。對個人博客來說,欄目數(shù)據(jù)的變動通常是很少的。

博客的文章類型通常不止一種:有時候你會寫高深莫測的技術文章,有時候又純粹只記錄一下當天的心情。

因此對文章的分類就顯得相當?shù)闹匾耍确奖悴┲鲗ξ恼逻M行分類歸檔,也方便用戶有針對性的閱讀。

而文章分類一個重要的途徑就是設置欄目

欄目的模型

實現(xiàn)文章欄目功能的方法有多種。你可以只是簡單的在文章的Model中增加CharField()字段,以字符串的形式將欄目名稱保存起來(實際上這種實現(xiàn)更像是“標簽”,以后會講到)。這樣做的優(yōu)點是比較簡單;缺點也很明顯,就是時間長了你可能會記混欄目的名字,并且也不方便對欄目的其他屬性進行擴展。

因此對文章欄目可以獨立為一個Model,用外鍵與文章的Model關聯(lián)起來。

修改article/modles.py文件:

article/models.py

...

class ArticleColumn(models.Model):
    """
    欄目的 Model
    """
    # 欄目標題
    title = models.CharField(max_length=100, blank=True)
    # 創(chuàng)建時間
    created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title


class ArticlePost(models.Model):
    ...

    # 文章欄目的 “一對多” 外鍵
    column = models.ForeignKey(
        ArticleColumn,
        null=True,
        blank=True,
        on_delete=models.CASCADE,
        related_name="article"
    )
    
    ...

欄目的Model有兩個字段,“名稱”和“創(chuàng)建日期”。

一篇文章只有一個欄目,而一個欄目可以對應多篇文章,因此建立“一對多”的關系。

寫好模型后記得用makemigrationsmigrate指令遷移數(shù)據(jù)

列表中顯示欄目 添加測試數(shù)據(jù)

模型寫好之后就需要幾條欄目的數(shù)據(jù)來進行測試。由于還沒有寫視圖,因此需要善加利用Django自帶的后臺。

首先把欄目模型注冊到后臺:

article/admin.py

...

from .models import ArticleColumn

# 注冊文章欄目
admin.site.register(ArticleColumn)

然后就可以在后臺中添加欄目的數(shù)據(jù)條目了:

先隨便添加了“HTML”、“Java”、“Django”這3條。

在后臺中隨便打開一篇文章,“欄目”字段已經(jīng)靜靜的在等你了:

隨機找?guī)灼恼略O置不同的欄目用于測試。

重寫文章列表

之前我們用卡片類型的UI界面展示文章列表。

卡片的好處是簡潔大方,但是隨著數(shù)據(jù)的增多,卡片小小的版面已經(jīng)不堪重負了。

因此這里重寫list.html模板的列表循環(huán):

article/list.html

...


{% for article in articles %}
{% if article.column %} {% endif %}

{{ article.title }}

{{ article.body|slice:"100" }}...

{{ article.total_views }} 瀏覽    {{ article.created|date:"Y-m-d" }} 發(fā)布    {{ article.updated|date:"Y-m-d" }} 更新


{% endfor %}
...

最主要的改動就是新增了展現(xiàn)“欄目”的按鈕。我們甚至還為不同的欄目設置了不同的按鈕顏色。

在附加信息中順便還把之前沒有用到的日期信息也添加上去了。

來看看效果:

感覺還不錯!

修改寫文章功能

展示已經(jīng)沒問題了,但是發(fā)表新文章時還不能選擇欄目。

修改寫文章的模板,在表單中新增下面的內(nèi)容:

templates/article/create.html

...


{% csrf_token %} ...
... ...

{% for column in columns %} {% endfor %}

... ... ...

與前面稍有不同的是,表單中判斷了column.idarticle.column.id是否相等,如果相等則將其設置為默認值。

然后修改視圖函數(shù):

article/views.py

# 更新文章
...
def article_update(request, id):
    ...

    # 判斷用戶是否為 POST 提交表單數(shù)據(jù)
    if request.method == "POST":
        ...
        if article_post_form.is_valid():
            ...

            # 新增的代碼
            if request.POST["column"] != "none":
                article.column = ArticleColumn.objects.get(id=request.POST["column"])
            else:
                article.column = None

            ...

    else:
        ...

        # 新增及修改的代碼
        columns = ArticleColumn.objects.all()
        context = { 
            "article": article, 
            "article_post_form": article_post_form,
            "columns": columns,
        }

        ...

代碼邏輯與前面很類似。修改文章的欄目功能,也就完成了。

總結

本章實現(xiàn)了簡單的欄目功能,可以舒舒服服對文章進行分類了,強迫癥福音啊。

還有些可以完善的工作,比如:

單擊欄目按鈕顯示所有相同欄目的文章。這個功能與之前學過的最熱文章排序以及搜索文章非常的類似。還記得filter()方法嗎?

欄目Model的增刪改查。

對個人博客來說,欄目數(shù)據(jù)的變動通常是很少的。如果你不想寫增刪改查,用后臺修改數(shù)據(jù)是完全可以的。

以上內(nèi)容就不再贅述了。留給讀者去嘗試實現(xiàn)。

有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。

或Email私信我:dusaiphoto@foxmail.com

項目完整代碼:Django_blog_tutorial

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43103.html

相關文章

  • Django搭建個人博客文章標簽功能

    摘要:每一篇文章的標簽可能都不一樣,并且還可能擁有多個標簽,這是與欄目功能不同的。列表中顯示標簽雖然保存標簽的功能已經(jīng)實現(xiàn)了,還得把它顯示出來才行。更多的用法請閱讀官方文檔總結本章學習了使用來完成標簽功能。 標簽是作者從文章中提取的核心詞匯,其他用戶可以通過標簽快速了解文章的關注點。每一篇文章的標簽可能都不一樣,并且還可能擁有多個標簽,這是與欄目功能不同的。 好在標簽功能也有優(yōu)秀的三方庫:D...

    Amio 評論0 收藏0
  • Django搭建個人博客:結束和開始

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

    zqhxuyuan 評論0 收藏0
  • Django搭建個人博客:用django-allauth實現(xiàn)第三方登錄

    摘要:比較流行的解決方案是允許用戶通過第三方登錄,即可以通過微博這類知名社區(qū)的授權,從而登錄你的小站,免去了注冊的麻煩。微博微信的登錄方式大致都遵循這個流程本章雖然加載了微博的接口,但是限于篇幅并沒有配置,請讀者查閱官方文檔去實現(xiàn)。 現(xiàn)在我們已經(jīng)擁有一個可以進行用戶本地登錄的博客系統(tǒng)了。如果有人欣賞你的文章,說不定就會注冊成為本地用戶,并和你好好交流一番。 但頭疼的是,用戶可能每天都在互聯(lián)網(wǎng)...

    waruqi 評論0 收藏0
  • 使用 django-blog-zinnia 搭建個人博客

    摘要:語法支持再次打開文件,在文件的最后添加指明了使用語法標記,做了兩個拓展,其中表示支持語法高亮,包含的特性請參見相關文檔。語法高亮支持注意這一步必須在安裝完主題之后。 目前網(wǎng)上搭建個人博客的方案很多,雖然使用諸如 Wordpress ( PHP )、Hexo ( Node.js ) 等可以方便快速地搭建一款功能齊全的高性能個人博客,但是本文將嘗試一種更為小眾化的方案 —— 一款基于 dj...

    褰辯話 評論0 收藏0
  • Django搭建個人博客文章分頁

    摘要:隨著時間的推移加上勤奮的寫作,你的博客文章一定會越來越多。如果不進行處理,可能同一個頁面會擠上成百上千的文章,不美觀不說,還降低了頁面的反應速度。這個時候就需要對文章進行分頁的處理。有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。 隨著時間的推移(加上勤奮的寫作!),你的博客文章一定會越來越多。如果不進行處理,可能同一個頁面會擠上成百上千的文章,不美觀不說,還降低了頁面的反應速度。 這個時...

    stormgens 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<