網站開發(週四):項目後臺數據管理(實戰)

前言: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」。

至此,數據庫管理後臺開發完畢!

接下來,咱們着力開發前端頁面。

相關文章
相關標籤/搜索