1. 程式人生 > >用Django框架開發一個簡單的企業網站(三)

用Django框架開發一個簡單的企業網站(三)

接著之前的專案繼續深入開發,後臺和資料庫已經搞定,現在可以寫我們網站的功能了;就寫一個最簡單的功能,釋出企業新聞。開啟app內的models.py檔案,寫兩個資料模型類:

from django.db import models


class NewsClass(models.Model):
    name = models.CharField('分類名稱', max_length=10)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '資訊類別'
        verbose_name_plural = '資訊類別'


class News(models.Model):
    # 預設新增
    # id = models.AutoField(primary_key=True)
    title = models.CharField('文章標題', max_length=30)
    content = models.TextField('文章內容')
    date = models.DateTimeField('釋出時間')
    show = models.BooleanField('是否顯示')
    news_class = models.ForeignKey(
        NewsClass, verbose_name='文章分類', on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '資訊'
        verbose_name_plural = '資訊'

關於資料模型類,可以理解為一張資料表,類裡面的屬性就是表的欄位;id欄位如果沒有特殊要求可以不寫,Django會自動建立。為了後臺顯示美觀,這裡我給欄位和類都設定了中文別名;更多關於django的models模型類的常用資料型別和選項,留個連結https://www.jianshu.com/p/651aa9fe5d1a,有點資料庫基礎應該不難理解。

寫好資料模型類,執行manage命令,會在app目錄migrations/和migrations/__pycache__/路徑下各生成一個記錄檔案:

python manage.py makemigrations

有了這個檔案,執行命令更新資料表:

python manage.py migrate

現在重新整理資料庫,可以發現新建了兩個資料表(表名預設:app名_類名):

對資料模型做了任何修改都要執行上面兩個manage命令,同步資料庫;如果直接在資料庫裡修改欄位,刪除表或者刪除了之前的資料模型記錄檔案,可能會導致python manage.py migrate命令無法從資料模型更新表,不過也沒關係,執行下面的命令:

python manage.py sqlmigrate 'your_app_name' 0001檢視框架自動生成的sql語句

控制檯顯示0001記錄檔案轉化的sql語句,複製sql語句可以直接在資料庫中操作。

現在有了新聞分類和新聞內容2張資料表,在後臺註冊這兩個資料模型類,這樣就能直接通過後臺向資料表裡新增資料了,開啟app內admin.py:

from web_app.models import *


admin.site.register(News)
admin.site.register(NewsClass)

執行web服務,開啟後臺:

美中不足的是,Django預設的大容量文字欄位是通過一個textarea作為輸入方式,後面的文章我會給後臺新增一個富文字編輯器。