Django搭建個人博客:創建 Django 博客的數據庫模型

Django 採用了MVC的軟件設計模式,即模型M,視圖V和控制器C

  • 模型models: 負責處理與數據相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及數據之間的關係等。
  • 模板(Template),即業務邏輯層:層處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。
  • 視圖(View),即表現層:存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。

數據庫表結構

  1. 博客最主要的功能就是展示我們寫的文章,它需要從某個地方獲取博客文章數據才能把文章展示出來,通常來說這個地方就是數據庫。我們把寫好的文章永久地保存在數據庫裡,當用戶訪問我們的博客時,django 就去數據庫裡把這些數據取出來展現給用戶。
  2. 一篇現代化文章需要有標題,正文,作者,分類,標籤,發佈時間,評論等等。為了更好的方便管理,我們需要合理的組織數據表結構。
  3. 下面我們來看看數據庫表長啥樣
Django搭建個人博客:創建 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後臺管理

如果有疑問可以私聊或者在下方留言,我會及時解決與答覆。


Django搭建個人博客:創建 Django 博客的數據庫模型

上一篇


分享到:


相關文章: