亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Django 博客開發(fā)教程 3 - 創(chuàng)建 Django 博客的數(shù)據(jù)庫(kù)模型

Shimmer / 3394人閱讀

摘要:而對(duì)于標(biāo)簽來(lái)說(shuō),一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用,表明這是多對(duì)多的關(guān)聯(lián)關(guān)系。理解多對(duì)一和多對(duì)多兩種關(guān)聯(lián)關(guān)系我們分別使用了兩種關(guān)聯(lián)數(shù)據(jù)庫(kù)表的形式和。表明一種一對(duì)多的關(guān)聯(lián)關(guān)系。

設(shè)計(jì)博客的數(shù)據(jù)庫(kù)表結(jié)構(gòu)

博客最主要的功能就是展示我們寫的文章,它需要從某個(gè)地方獲取博客文章數(shù)據(jù)才能把文章展示出來(lái),通常來(lái)說(shuō)這個(gè)地方就是數(shù)據(jù)庫(kù)。我們把寫好的文章永久地保存在數(shù)據(jù)庫(kù)里,當(dāng)用戶訪問(wèn)我們的博客時(shí),Django 就去數(shù)據(jù)庫(kù)里把這些數(shù)據(jù)取出來(lái)展現(xiàn)給用戶。

博客的文章應(yīng)該含有標(biāo)題、正文、作者、發(fā)表時(shí)間等數(shù)據(jù)。一個(gè)更加現(xiàn)代化的博客文章還希望它有分類、標(biāo)簽、評(píng)論等。為了更好地存儲(chǔ)這些數(shù)據(jù),我們需要合理地組織數(shù)據(jù)庫(kù)的表結(jié)構(gòu)。

我們的博客初級(jí)版本主要包含博客文章,文章會(huì)有分類以及標(biāo)簽。一篇文章只能有一個(gè)分類,但可以打上很多標(biāo)簽。

數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)其實(shí)就是表格的形式,例如存儲(chǔ)博客文章的數(shù)據(jù)庫(kù)表長(zhǎng)這個(gè)樣子:

文章 id 標(biāo)題 正文 發(fā)表時(shí)間 分類 標(biāo)簽
1 title 1 text 1 2016-12-23 Django Django 學(xué)習(xí)
2 title 2 text 2 2016-12-24 Django Django 學(xué)習(xí)
3 title 3 text 3 2016-12-26 Python Python 學(xué)習(xí)

其中文章 ID 是一個(gè)數(shù)字,唯一對(duì)應(yīng)著一篇文章。當(dāng)然還可以有更多的列以存儲(chǔ)更多相關(guān)數(shù)據(jù),這只是一個(gè)最基本的示例。

數(shù)據(jù)庫(kù)表設(shè)計(jì)成這樣其實(shí)已經(jīng)可以了,但是稍微分析一下我們就會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,這 3 篇文章的分類和標(biāo)簽都是相同的,這會(huì)產(chǎn)生很多重復(fù)數(shù)據(jù),當(dāng)數(shù)據(jù)量很大時(shí)就浪費(fèi)了存儲(chǔ)空間。

不同的文章可能它們對(duì)應(yīng)的分類或者標(biāo)簽是相同的,所以我們把分類和標(biāo)簽提取出來(lái),做成多帶帶的數(shù)據(jù)庫(kù)表,再把文章和分類、標(biāo)簽關(guān)聯(lián)起來(lái)。下面分別是分類和標(biāo)簽的數(shù)據(jù)庫(kù)表:

分類 id 分類名
1 Django
2 Python
標(biāo)簽 id 標(biāo)簽名
1 Django 學(xué)習(xí)
2 Python 學(xué)習(xí)
編寫博客模型代碼

以上是自然語(yǔ)言描述的表格,數(shù)據(jù)庫(kù)也和編程語(yǔ)言一樣,有它自己的一套規(guī)定的語(yǔ)法來(lái)生成上述的表結(jié)構(gòu),這樣我們才能把數(shù)據(jù)存進(jìn)去。一般來(lái)說(shuō)這時(shí)候我們應(yīng)該先去學(xué)習(xí)數(shù)據(jù)庫(kù)創(chuàng)建表格的語(yǔ)法,再回來(lái)寫我們的 Django 博客代碼了。但是 Django 告訴我們不用這么麻煩,它已經(jīng)幫我們做了一些事情。Django 把那一套數(shù)據(jù)庫(kù)的語(yǔ)法轉(zhuǎn)換成了 Python 的語(yǔ)法形式,我們只要寫 Python 代碼就可以了,Django 會(huì)把 Python 代碼翻譯成對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作語(yǔ)言。用更加專業(yè)一點(diǎn)的說(shuō)法,就是 Django 為我們提供了一套 ORM(Object Relational Mapping)系統(tǒng)。

例如我們的分類數(shù)據(jù)庫(kù)表,Django 只要求我們這樣寫:

blog/models.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)

Category 就是一個(gè)標(biāo)準(zhǔn)的 Python 類,它繼承了 models.Model 類,類名為 CategoryCategory 類有一個(gè)屬性 name,它是 models.CharField 的一個(gè)實(shí)例。

這樣,Django 就可以把這個(gè)類翻譯成數(shù)據(jù)庫(kù)的操作語(yǔ)言,在數(shù)據(jù)庫(kù)里創(chuàng)建一個(gè)名為 category 的表格,這個(gè)表格的一個(gè)列名為 name。還有一個(gè)列 id,Django 則會(huì)自動(dòng)創(chuàng)建??梢钥闯鰪?Python 代碼翻譯成數(shù)據(jù)庫(kù)語(yǔ)言時(shí)其規(guī)則就是一個(gè) Python 類對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表格,類名即表名,類的屬性對(duì)應(yīng)著表格的列,屬性名即列名。

我們需要 3 個(gè)表格:文章(Post)、分類(Category)以及標(biāo)簽(Tag),下面就來(lái)分別編寫它們對(duì)應(yīng)的 Python 類。模型的代碼通常寫在相關(guān)應(yīng)用的 models.py 文件里。已經(jīng)在代碼中做了詳細(xì)的注釋,說(shuō)明每一句代碼的含義。但如果你在移動(dòng)端下閱讀不便的話,也可以跳到代碼后面看正文的里的講解。

注意:代碼中含有中文注釋,如果你直接 copy 代碼到你的文本編輯器且使用了 Python 2 開發(fā)環(huán)境的話,會(huì)得到一個(gè)編碼錯(cuò)誤。因此請(qǐng)?jiān)谖募铋_始處加入編碼聲明:# coding: utf-8。

blog/models.py

from django.db import models
from django.contrib.auth.models import User


class Category(models.Model):
    """
    Django 要求模型必須繼承 models.Model 類。
    Category 只需要一個(gè)簡(jiǎn)單的分類名 name 就可以了。
    CharField 指定了分類名 name 的數(shù)據(jù)類型,CharField 是字符型,
    CharField 的 max_length 參數(shù)指定其最大長(zhǎng)度,超過(guò)這個(gè)長(zhǎng)度的分類名就不能被存入數(shù)據(jù)庫(kù)。
    當(dāng)然 Django 還為我們提供了多種其它的數(shù)據(jù)類型,如日期時(shí)間類型 DateTimeField、整數(shù)類型 IntegerField 等等。
    Django 內(nèi)置的全部類型可查看文檔:
    https://docs.djangoproject.com/en/1.10/ref/models/fields/#field-types
    """
    name = models.CharField(max_length=100)


class Tag(models.Model):
    """
    標(biāo)簽 Tag 也比較簡(jiǎn)單,和 Category 一樣。
    再次強(qiáng)調(diào)一定要繼承 models.Model 類!
    """
    name = models.CharField(max_length=100)


class Post(models.Model):
    """
    文章的數(shù)據(jù)庫(kù)表稍微復(fù)雜一點(diǎn),主要是涉及的字段更多。
    """

    # 文章標(biāo)題
    title = models.CharField(max_length=70)

    # 文章正文,我們使用了 TextField。
    # 存儲(chǔ)比較短的字符串可以使用 CharField,但對(duì)于文章的正文來(lái)說(shuō)可能會(huì)是一大段文本,因此使用 TextField 來(lái)存儲(chǔ)大段文本。
    body = models.TextField()

    # 這兩個(gè)列分別表示文章的創(chuàng)建時(shí)間和最后一次修改時(shí)間,存儲(chǔ)時(shí)間的字段用 DateTimeField 類型。
    created_time = models.DateTimeField()
    modified_time = models.DateTimeField()

    # 文章摘要,可以沒有文章摘要,但默認(rèn)情況下 CharField 要求我們必須存入數(shù)據(jù),否則就會(huì)報(bào)錯(cuò)。
    # 指定 CharField 的 blank=True 參數(shù)值后就可以允許空值了。
    excerpt = models.CharField(max_length=200, blank=True)

    # 這是分類與標(biāo)簽,分類與標(biāo)簽的模型我們已經(jīng)定義在上面。
    # 我們?cè)谶@里把文章對(duì)應(yīng)的數(shù)據(jù)庫(kù)表和分類、標(biāo)簽對(duì)應(yīng)的數(shù)據(jù)庫(kù)表關(guān)聯(lián)了起來(lái),但是關(guān)聯(lián)形式稍微有點(diǎn)不同。
    # 我們規(guī)定一篇文章只能對(duì)應(yīng)一個(gè)分類,但是一個(gè)分類下可以有多篇文章,所以我們使用的是 ForeignKey,即一對(duì)多的關(guān)聯(lián)關(guān)系。
    # 而對(duì)于標(biāo)簽來(lái)說(shuō),一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用 ManyToManyField,表明這是多對(duì)多的關(guān)聯(lián)關(guān)系。
    # 同時(shí)我們規(guī)定文章可以沒有標(biāo)簽,因此為標(biāo)簽 tags 指定了 blank=True。
    # 如果你對(duì) ForeignKey、ManyToManyField 不了解,請(qǐng)看教程中的解釋,亦可參考官方文檔:
    # https://docs.djangoproject.com/en/1.10/topics/db/models/#relationships
    category = models.ForeignKey(Category)
    tags = models.ManyToManyField(Tag, blank=True)

    # 文章作者,這里 User 是從 django.contrib.auth.models 導(dǎo)入的。
    # django.contrib.auth 是 Django 內(nèi)置的應(yīng)用,專門用于處理網(wǎng)站用戶的注冊(cè)、登錄等流程,User 是 Django 為我們已經(jīng)寫好的用戶模型。
    # 這里我們通過(guò) ForeignKey 把文章和 User 關(guān)聯(lián)了起來(lái)。
    # 因?yàn)槲覀円?guī)定一篇文章只能有一個(gè)作者,而一個(gè)作者可能會(huì)寫多篇文章,因此這是一對(duì)多的關(guān)聯(lián)關(guān)系,和 Category 類似。
    author = models.ForeignKey(User)
博客模型代碼代碼詳解

首先是 CategoryTag 類,它們均繼承自 model.Model 類,這是 Django 規(guī)定的。CategoryTag 類均有一個(gè) name 屬性,用來(lái)存儲(chǔ)它們的名稱。由于分類名和標(biāo)簽名一般都是用字符串表示,因此我們使用了 CharField 來(lái)指定 name 的數(shù)據(jù)類型,同時(shí) max_length 參數(shù)則指定 name 允許的最大長(zhǎng)度,超過(guò)該長(zhǎng)度的字符串將不允許存入數(shù)據(jù)庫(kù)。除了 CharField ,Django 還為我們提供了更多內(nèi)置的數(shù)據(jù)類型,比如時(shí)間類型 DateTimeField、整數(shù)類型 IntegerField 等等。

在本教程中我們會(huì)教你這些類型的使用方法,但以后你開發(fā)自己的項(xiàng)目時(shí),你就需要通過(guò)閱讀Django 官方文檔 關(guān)于字段類型的介紹 來(lái)了解有哪些數(shù)據(jù)類型可以使用以及如何使用它們。

Post 類也一樣,必須繼承自 model.Model 類。文章的數(shù)據(jù)庫(kù)表稍微復(fù)雜一點(diǎn),主要是列更多,我們指定了這些列:

title。這是文章的標(biāo)題,數(shù)據(jù)類型是 CharField,允許的最大長(zhǎng)度 max_length = 70

body。文章正文,我們使用了 TextField。比較短的字符串存儲(chǔ)可以使用 CharField,但對(duì)于文章的正文來(lái)說(shuō)可能會(huì)是一大段文本,因此使用 TextField 來(lái)存儲(chǔ)大段文本。

created_timemodified_time。這兩個(gè)列分別表示文章的創(chuàng)建時(shí)間和最后一次修改時(shí)間,存儲(chǔ)時(shí)間的列用 DateTimeField 數(shù)據(jù)類型。

excerpt。文章摘要,可以沒有文章摘要,但默認(rèn)情況下 CharField 要求我們必須存入數(shù)據(jù),否則就會(huì)報(bào)錯(cuò)。指定 CharFieldblank=True 參數(shù)值后就可以允許空值了。

categorytags。這是分類與標(biāo)簽,分類與標(biāo)簽的模型我們已經(jīng)定義在上面。我們把文章對(duì)應(yīng)的數(shù)據(jù)庫(kù)表和分類、標(biāo)簽對(duì)應(yīng)的數(shù)據(jù)庫(kù)表關(guān)聯(lián)了起來(lái),但是關(guān)聯(lián)形式稍微有點(diǎn)不同。我們規(guī)定一篇文章只能對(duì)應(yīng)一個(gè)分類,但是一個(gè)分類下可以有多篇文章,所以我們使用的是 ForeignKey,即一對(duì)多的關(guān)聯(lián)關(guān)系。而對(duì)于標(biāo)簽來(lái)說(shuō),一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用 ManyToManyField,表明這是多對(duì)多的關(guān)聯(lián)關(guān)系。同時(shí)我們規(guī)定文章可以沒有標(biāo)簽,因此為標(biāo)簽 tags 指定了 blank=True。

author。文章作者,這里 User 是從 django.contrib.auth.models 導(dǎo)入的。django.contrib.auth 是 Django 內(nèi)置的應(yīng)用,專門用于處理網(wǎng)站用戶的注冊(cè)、登錄等流程。其中 User 是 Django 為我們已經(jīng)寫好的用戶模型,和我們自己編寫的 Category 等類是一樣的。這里我們通過(guò) ForeignKey 把文章和 User關(guān)聯(lián)了起來(lái),因?yàn)槲覀円?guī)定一篇文章只能有一個(gè)作者,而一個(gè)作者可能會(huì)寫多篇文章,因此這是一對(duì)多的關(guān)聯(lián)關(guān)系,和 Category 類似。

理解多對(duì)一和多對(duì)多兩種關(guān)聯(lián)關(guān)系

我們分別使用了兩種關(guān)聯(lián)數(shù)據(jù)庫(kù)表的形式:ForeignKey 和 ManyToManyField。

ForeignKey

ForeignKey 表明一種一對(duì)多的關(guān)聯(lián)關(guān)系。比如這里我們的文章和分類的關(guān)系,一篇文章只能對(duì)應(yīng)一個(gè)分類,而一個(gè)分類下可以有多篇文章。反應(yīng)到數(shù)據(jù)庫(kù)表格中,它們的實(shí)際存儲(chǔ)情況是這樣的:

文章 ID 標(biāo)題 正文 分類 ID
1 title 1 body 1 1
2 title 2 body 2 1
3 title 3 body 3 1
4 title 4 body 4 2
分類 ID 分類名
1 Django
2 Python

可以看到文章和分類實(shí)際上是通過(guò)文章數(shù)據(jù)庫(kù)表中 分類 ID 這一列關(guān)聯(lián)的。當(dāng)要查詢文章屬于哪一個(gè)分類時(shí),只需要查看其對(duì)應(yīng)的分類 ID 是多少,然后根據(jù)這個(gè)分類 ID 就可以從分類數(shù)據(jù)庫(kù)表中找到該分類的數(shù)據(jù)。例如這里文章 1、2、3 對(duì)應(yīng)的分類 ID 均為 1,而分類 ID 為 1 的分類名為 Django,所以文章 1、2、3 屬于分類 Django。同理文章 4 屬于分類 Python。

反之,要查詢某個(gè)分類下有哪些文章,只需要查看對(duì)應(yīng)該分類 ID 的文章有哪些即可。例如這里 Django 的分類 ID 為 1,而對(duì)應(yīng)分類 ID 為 1 的文章有文章 1、2、3,所以分類 Django 下有 3 篇文章。

希望這個(gè)例子能幫助你加深對(duì)多對(duì)一關(guān)系,以及它們?cè)跀?shù)據(jù)庫(kù)中是如何被關(guān)聯(lián)的理解,更多的例子請(qǐng)看文末給出的 Django 官方參考資料。

ManyToManyField

ManyToManyField 表明一種多對(duì)多的關(guān)聯(lián)關(guān)系,比如這里的文章和標(biāo)簽,一篇文章可以有多個(gè)標(biāo)簽,而一個(gè)標(biāo)簽下也可以有多篇文章。反應(yīng)到數(shù)據(jù)庫(kù)表格中,它們的實(shí)際存儲(chǔ)情況是這樣的:

文章 ID 標(biāo)題 正文
1 title 1 body 1
2 title 2 body 2
3 title 3 body 3
4 title 4 body 4
標(biāo)簽 ID 標(biāo)簽名
1 Django 學(xué)習(xí)
2 Python 學(xué)習(xí)
文章 ID 標(biāo)簽 ID
1 1
1 2
2 1
3 2

多對(duì)多的關(guān)系無(wú)法再像一對(duì)多的關(guān)系中的例子一樣在文章數(shù)據(jù)庫(kù)表加一列 分類 ID 來(lái)關(guān)聯(lián)了,因此需要額外建一張表來(lái)記錄文章和標(biāo)簽之間的關(guān)聯(lián)。例如文章 ID 為 1 的文章,既對(duì)應(yīng)著 標(biāo)簽 ID 為 1 的標(biāo)簽,也對(duì)應(yīng)著 標(biāo)簽 ID 為 2 的標(biāo)簽,即文章 1 既屬于標(biāo)簽 1:Django 學(xué)習(xí),也屬于標(biāo)簽 2:Python 學(xué)習(xí)。

反之,標(biāo)簽 ID 為 1 的標(biāo)簽,既對(duì)應(yīng)著 文章 ID 為 1 的文章,也對(duì)應(yīng)著 文章 ID 為 2 的文章,即標(biāo)簽 1:Django 學(xué)習(xí)下有兩篇文章。

希望這個(gè)例子能幫助你加深對(duì)多對(duì)多關(guān)系,以及它們?cè)跀?shù)據(jù)庫(kù)中是如何被關(guān)聯(lián)的理解,更多的例子請(qǐng)看文末給出的 Django 官方參考資料。

假如你對(duì)多對(duì)一關(guān)系和多對(duì)多關(guān)系還存在一些困惑,強(qiáng)烈建議閱讀官方文檔對(duì)這兩種關(guān)系的說(shuō)明以及更多官方的例子以加深理解:

Django ForeignKey 簡(jiǎn)介

Django ForeignKey 詳細(xì)示例

Django ManyToManyField 簡(jiǎn)介

Django ManyToManyField 詳細(xì)示例

總結(jié)

本章節(jié)的代碼位于:Step3: blog models。

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

在 創(chuàng)建 Django 博客的數(shù)據(jù)庫(kù)模型 - 追夢(mèng)人物的博客 的評(píng)論區(qū)留言。

將問(wèn)題的詳細(xì)描述通過(guò)郵件發(fā)送到 djangostudyteam@163.com,一般會(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://www.ezyhdfw.cn/yun/44402.html

相關(guān)文章

  • Django 博客開發(fā)教程 7 - 在 Django Admin 后臺(tái)發(fā)布文章

    摘要:注意每篇文章必須有一個(gè)分類,在添加文章時(shí)你可以選擇已有分類。在在后臺(tái)發(fā)布文章追夢(mèng)人物的博客的評(píng)論區(qū)留言。將問(wèn)題的詳細(xì)描述通過(guò)郵件發(fā)送到,一般會(huì)在小時(shí)內(nèi)回復(fù)。 在此之前我們完成了 Django 博客首頁(yè)視圖的編寫,我們希望首頁(yè)展示發(fā)布的博客文章列表,但是它卻抱怨:暫時(shí)還沒有發(fā)布的文章!如它所言,我們確實(shí)還沒有發(fā)布任何文章,本節(jié)我們將使用 Django 自帶的 Admin 后臺(tái)來(lái)發(fā)布我們的...

    ixlei 評(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 博客開發(fā)教程 4 - 讓 Django 完成翻譯:遷移數(shù)據(jù)庫(kù)

    摘要:激活虛擬環(huán)境,切換到文件所在的目錄下,分別運(yùn)行和命令注意如果代碼中含有中文注釋,且你使用的是開發(fā)環(huán)境的話,會(huì)得到一個(gè)編碼錯(cuò)誤。因此請(qǐng)?jiān)诤兄形淖⑨尩奈募铋_始處加入編碼聲明。在讓完成翻譯遷移數(shù)據(jù)庫(kù)追夢(mèng)人物的博客的評(píng)論區(qū)留言。 我們已經(jīng)編寫了博客數(shù)據(jù)庫(kù)模型的代碼,但那還只是 Python 代碼而已,Django 還沒有把它翻譯成數(shù)據(jù)庫(kù)語(yǔ)言,因此實(shí)際上這些數(shù)據(jù)庫(kù)表還沒有真正的在數(shù)據(jù)庫(kù)中創(chuàng)建...

    marek 評(píng)論0 收藏0
  • Django 博客開發(fā)教程 13 - 已知小問(wèn)題修正

    摘要:所以,讓我們?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ù)中都...

    bergwhite 評(píng)論0 收藏0
  • Django 博客開發(fā)教程 16 - 統(tǒng)計(jì)文章閱讀量

    如何精確地記錄一篇文章的閱讀量是一個(gè)比較復(fù)雜的問(wèn)題,不過(guò)對(duì)于我們的博客來(lái)說(shuō),沒有必要記錄的那么精確。因此我們使用一種簡(jiǎn)單但有效的方式來(lái)記錄博客文章的閱讀量:文章每被瀏覽一次,則其閱讀量 +1,即所謂的文章頁(yè)面 PV(Page View)數(shù)。雖然簡(jiǎn)單粗暴,但卻高效實(shí)用。 增加新字段 為了記錄文章的瀏覽量,需要在文章的數(shù)據(jù)庫(kù)表中新增一個(gè)用于存儲(chǔ)閱讀量的字段。因此給博客文章的模型新增一個(gè) views 字...

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

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

0條評(píng)論

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