用Django框架開發一個簡單的企業網站(三)
阿新 • • 發佈:2018-11-27
接著之前的專案繼續深入開發,後臺和資料庫已經搞定,現在可以寫我們網站的功能了;就寫一個最簡單的功能,釋出企業新聞。開啟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作為輸入方式,後面的文章我會給後臺新增一個富文字編輯器。