Django 採用了MVC的軟件設計模式,即模型M,視圖V和控制器C
- 模型models: 負責處理與數據相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及數據之間的關係等。
- 模板(Template),即業務邏輯層:層處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。
- 視圖(View),即表現層:存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。
數據庫表結構
- 博客最主要的功能就是展示我們寫的文章,它需要從某個地方獲取博客文章數據才能把文章展示出來,通常來說這個地方就是數據庫。我們把寫好的文章永久地保存在數據庫裡,當用戶訪問我們的博客時,django 就去數據庫裡把這些數據取出來展現給用戶。
- 一篇現代化文章需要有標題,正文,作者,分類,標籤,發佈時間,評論等等。為了更好的方便管理,我們需要合理的組織數據表結構。
- 下面我們來看看數據庫表長啥樣
- 一篇文章對應的一個唯一的ID,當然還可以有更多的列以存儲更多相關數據,這只是一個最基本的示例。
- 數據庫也和編程語言一樣,它本身也是一門語言,有它自己的一套規定的語法來生成上述的表結構,這樣我們才能把數據存進去。一般來說這時候我們應該先去學習數據庫創建表格的語法,再回來寫我們的 django 博客代碼了。但是 django 告訴我們不用這麼麻煩,它已經幫我們做了一些事情。django 把那一套數據庫的語法轉換成了 Python 的語法形式,我們只要寫 Python 代碼就可以了,django 會把 Python 代碼翻譯成對應的數據庫操作語言。感受一下Django的強大吧,用更加專業一點的說法,就是 django 為我們提供了一套 ORM(Object Relational Mapping)對象關係映射系統。
- 在 Django 裡寫Web應用並不需要你直接去操作數據庫,而是定義好模型(用Python語法就可以了!),模型中包含了操作數據庫所必要的命令。也就是說你只需要定義數據模型,其它的底層代碼都不用關心,它們會自動從模型生成。
下面我們開始編寫模版
編寫博客模型代碼
進入 article/models.py
<code>from django.db import models # 導入模型
from django.contrib.auth.models import User # 導入django自帶的用戶模型
from django.utils import timezone
class Category(models.Model):
name = models.CharField(max_length=30)
class Tags(models.Model):
name = models.CharField(max_length=30)
class Article(models.Model):
# 標題
title = models.CharField(max_length=100)
# 正文
body = models.TextField()
# 作者
author = models.ForeignKey(User,on_delete=models.CASCADE)
# 創建時間
created_time= models.DateTimeField(default=timezone.now)
# 文章摘要
excerpt = models.CharField(max_length=200, blank=True)
# 分類
category = models.ForeignKey(Category,on_delete=models.CASCADE)
# 標籤
tags = models.ManyToManyField(Tags,blank=True)
/<code>
代碼解讀:
- Article(文章)類繼承了models.py裡面的Model類
- title(標題) 數據類型是CharField,允許最大長度max_length=100
- body (正文)數據類型是TextField,不限制長度
- author(作者)數據類型是ForeignKey,這裡 User 是從 django.contrib.auth.models 導入的,django.contrib.auth 是 django 內置的應用,專門用於處理網站用戶的註冊、登錄等流程。這裡我們通過 ForeignKey 把文章和 User關聯了起來,因為我們規定一篇文章只能有一個作者,而一個作者可能會寫多篇文章,因此這是一對多的關聯關係
- created_time(創建時間):數據類型是DateTimeField,表示時間字段
- excerpt(文章摘要):數據類型是CharField,允許最大長度max_length=200,django內部規定CharField字段為必填字段,但是有些文章不需要摘要,這裡我們用blank=True,表示參數可以為空值。
好啦,基本的模型編寫完成~
總結
- 本章學習了Django的基本設計模型。
- 我們瞭解了數據表內部是什麼樣的結構。
下一章我們開始將數據遷移以及創建django後臺管理
如果有疑問可以私聊或者在下方留言,我會及時解決與答覆。
上一篇
閱讀更多 Python奇異果 的文章