前言:Django是經過模型(Model)來操做數據庫,Django能自動根據模型代碼中定義的類自動生成相應數據庫表,也即Django自動幫咱們把代碼轉化成SQL語句,而後再執行SQL語句生成相應數據庫表。每一個模型都是django.db.models.Model的子類,每一個模型在Django中的存在形式爲一個Python類,模型裏的每一個類表明數據庫中的一個表,模型的每一個字段(屬性)表明數據表的某一列。而且,Django將自動爲你生成數據庫訪問API。前端
第1、建立6張表(根據數據庫設計需求分析,咱們須要存儲六種數據:文章分類、文章、文章標籤、輪播圖、推薦位、友情連接,每種數據一個表)python
一、編寫6張表對應6個類的Python代碼。數據庫
from django.db import models
from django.contrib.auth.models import User
# 導入Django自帶用戶模塊
# 文章分類
class Category(models.Model):
name = models.CharField('博客分類', max_length=100)
index = models.IntegerField(default=999, verbose_name='分類排序')
class Meta:
verbose_name = '博客分類'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 文章標籤
class Tag(models.Model):
name = models.CharField('文章標籤', max_length=100)
class Meta:
verbose_name = '文章標籤'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 推薦位
class Tui(models.Model):
name = models.CharField('推薦位', max_length=100)
class Meta:
verbose_name = '推薦位'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 文章
class Article(models.Model):
title = models.CharField('標題', max_length=70)
excerpt = models.TextField('摘要', max_length=200, blank=True)
category = models.ForeignKey(Category, on_delete=models.DO_NOTHING, verbose_name='分類', blank=True, null=True)
# 使用外鍵關聯分類表與分類是一對多關係
tags = models.ManyToManyField(Tag, verbose_name='標籤', blank=True)
# 使用外鍵關聯標籤表與標籤是多對多關係
img = models.ImageField(upload_to='article_img/%Y/%m/%d/', verbose_name='文章圖片', blank=True, null=True)
body = models.TextField()
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='做者')
"""
文章做者,這裏User是從django.contrib.auth.models導入的。
這裏咱們經過 ForeignKey 把文章和 User 關聯了起來。
"""
views = models.PositiveIntegerField('閱讀量', default=0)
tui = models.ForeignKey(Tui, on_delete=models.DO_NOTHING, verbose_name='推薦位', blank=True, null=True)
created_time = models.DateTimeField('發佈時間', auto_now_add=True)
modified_time = models.DateTimeField('修改時間', auto_now=True)
class Meta:
verbose_name = '文章'
verbose_name_plural = '文章'
def __str__(self):
return self.title
# 輪播圖
class Banner(models.Model):
text_info = models.CharField('標題', max_length=50, default='')
img = models.ImageField('輪播圖', upload_to='banner/')
link_url = models.URLField('圖片連接', max_length=100)
is_active = models.BooleanField('是不是active', default=False)
def __str__(self):
return self.text_info
class Meta:
verbose_name = '輪播圖'
verbose_name_plural = '輪播圖'
# 友情連接
class Link(models.Model):
name = models.CharField('連接名稱', max_length=20)
linkurl = models.URLField('網址', max_length=100)
def __str__(self):
return self.name
class Meta:
verbose_name = '友情連接'
verbose_name_plural = '友情連接'
二、輸入兩行命令,執行6個類代碼,更新數據庫。django
(mysite2019) bash-3.2$ python manage.py makemigrations (mysite2019) bash-3.2$ python manage.py migrate
第2、再次配置後臺數據庫管理參數bash
一、在應用APP下的admin.py文件裏對數據庫表先進行註冊。數據庫設計
from django.contrib import admin from .models import Banner, Category, Tag, Tui, Article, Link #導入須要管理的數據庫表 @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('id', 'category', 'title', 'tui', 'user', 'views', 'created_time') # 文章列表裏顯示想要顯示的字段 list_per_page = 50 # 滿50條數據就自動分頁 ordering = ('-created_time',) #後臺數據列表排序方式 list_display_links = ('id', 'title') # 設置哪些字段能夠點擊進入編輯界面 @admin.register(Banner) class BannerAdmin(admin.ModelAdmin): list_display = ('id', 'text_info', 'img', 'link_url', 'is_active') @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'index') @admin.register(Tag) class TagAdmin(admin.ModelAdmin): list_display = ('id', 'name') @admin.register(Tui) class TuiAdmin(admin.ModelAdmin): list_display = ('id', 'name') @admin.register(Link) class LinkAdmin(admin.ModelAdmin): list_display = ('id', 'name','linkurl')
二、登陸管理後臺http://127.0.0.1:8000/admin/。編輯器
第3、使用DjangoUeditor富文本編輯器添加數據函數
一、下載並解壓安裝DjangoUeditor包到mystie2019項目根目錄。ui
二、在mysite2019/settings.py裏註冊APP,在INSTALLED_APPS裏添加'DjangoUeditor',。url
三、在mysite2019/urls.py裏添加url。
四、修改blog/models.py裏Article表裏的body字段,刪除原來字段替換爲富文本編輯器渲染的字段。
提醒:新增代碼的imagePath="upimg/", filePath="upfile/" 這兩個是圖片和文件上傳的路徑,咱們上傳文件,會自動上傳到項目根目錄media文件夾下對應的upimg和upfile目錄裏,因此在根目錄自定義建立media文件夾和對應的upimg和upfile文件夾。
五、在mysite2019/settings中添加media索引路徑。
錯誤:上面步驟完成後,咱們啓動項目,進入文章發佈頁面,提示出錯。
修復:主要是DjangoUeditor對最新版本與Django兼容不佳,打開DjangoUeditor/widgets.py,在render函數中增長「, renderer=None」。
至此,數據庫管理後臺開發完畢!
接下來,咱們着力開發前端頁面。