网站开发(周四):项目后台数据管理(实战)

摘要:
此外,Django将自动为您生成一个数据库访问API。在这里,我们通过ForeignKey将文章与User关联起来。"" “视图=模型。PositiveIntegerFieldtui=模型。ForeignKeycreated_time=模型。DateTimeFieldmodified_time=型号。DateTimeField类Meta:verbose_name='粒子'verbose_name_plural='粒子'def__str__:returnself.title#carousel classBanner:text_info=模型。CharFieldimg=模型。ImageFieldlink_url=模型。URLFieldis_active=模型。布尔字段def_str__:returnself.text_infoclassMeta:verbose_name=“地图”动词ose_ name_ Plural=“旋转图表”#友好链接classLink:name=模型。CharFieldlinkurl=模型。URLFielddef__ str__:returnself.nameclassMeta:verbose_ Name=“友好链接”verbose_ Name_ Plural=“友好连接”2。输入两行命令,执行六个类代码,并更新数据库。

前言:Django是通过模型(Model)来操作数据库,Django能自动根据模型代码中定义的类自动生成相应数据库表,也即Django自动帮我们把代码转化成SQL语句,然后再执行SQL语句生成相应数据库表。每个模型都是django.db.models.Model的子类,每个模型在Django中的存在形式为一个Python类,模型里的每个类代表数据库中的一个表,模型的每个字段(属性)代表数据表的某一列。并且,Django将自动为你生成数据库访问API

第一、创建6张表(根据数据库设计需求分析,我们需要存储六种数据:文章分类、文章、文章标签、轮播图、推荐位、友情链接,每种数据一个表

1、编写6张表对应6个类的Python代码。

网站开发(周四):项目后台数据管理(实战)第1张

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 = '友情链接'

 2、输入两行命令,执行6个类代码,更新数据库。

(mysite2019) bash-3.2$ python manage.py makemigrations
(mysite2019) bash-3.2$ python manage.py migrate

网站开发(周四):项目后台数据管理(实战)第2张

网站开发(周四):项目后台数据管理(实战)第3张

第二、再次配置后台数据库管理参数

1、在应用APP下的admin.py文件里对数据库表先进行注册。

网站开发(周四):项目后台数据管理(实战)第4张

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')

  2、登录管理后台http://127.0.0.1:8000/admin/。

网站开发(周四):项目后台数据管理(实战)第5张

第三、使用DjangoUeditor富文本编辑器添加数据

1、下载并解压安装DjangoUeditor包到mystie2019项目根目录。

网站开发(周四):项目后台数据管理(实战)第6张

2、在mysite2019/settings.py里注册APP,在INSTALLED_APPS里添加'DjangoUeditor',。

网站开发(周四):项目后台数据管理(实战)第7张

3、在mysite2019/urls.py里添加url。

网站开发(周四):项目后台数据管理(实战)第8张

4、修改blog/models.py里Article表里的body字段,删除原来字段替换为富文本编辑器渲染的字段。

网站开发(周四):项目后台数据管理(实战)第9张

网站开发(周四):项目后台数据管理(实战)第10张

提醒:新增代码的imagePath="upimg/", filePath="upfile/" 这两个是图片和文件上传的路径,我们上传文件,会自动上传到项目根目录media文件夹下对应的upimg和upfile目录里,所以在根目录自定义创建media文件夹和对应的upimg和upfile文件夹。

5、在mysite2019/settings中添加media索引路径。

网站开发(周四):项目后台数据管理(实战)第11张

错误:上面步骤完成后,我们启动项目,进入文章发布页面,提示出错。

网站开发(周四):项目后台数据管理(实战)第12张

修复:主要是DjangoUeditor对最新版本与Django兼容不佳,打开DjangoUeditor/widgets.py,在render函数中增加“, renderer=None”。

网站开发(周四):项目后台数据管理(实战)第13张

网站开发(周四):项目后台数据管理(实战)第14张

至此,数据库管理后台开发完毕!

接下来,我们着力开发前端页面。

免责声明:文章转载自《网站开发(周四):项目后台数据管理(实战)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇40.lombok在IntelliJ IDEA下的使用加载gif图过渡效果下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shiro细节、默认的过滤器、匹配模式和顺序

部分细节 [urls] 部分的配置,其格式是:“url=拦截器[参数],拦截器[参数]”; 如果当前请求的url匹配[urls] 部分的某个url模式,将会执行其配置的拦截器。 anon(anonymous)拦截器表示匿名访问(即不需要登录即可访问) authc(authentication)拦截器表示需要身份认证通过后才能访问 shiro中默认的过滤...

iOS 本地存储四种方法

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题。将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好。下面介绍⼀一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提 供encodeWithCoder:和init...

【MongoDB】关于Mongodb的学习与总结

 直接去看mongodb官网的文档学习是最快捷的途径。链接如下:https://docs.mongodb.com/manual/tutorial/getting-started/ 一、基础概念 Mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中应用功能最丰富的,最像关系数据库的数据库。它支持的数据结构非常松散,是类似json的bj...

【转贴收藏】SQL常用语句,含查看数据库日志

--//清空日志checkpoint--//查看数据库日志select * from ::fn_dblog(null,null)select * from ::fn_dblog(null,null) where [current lsn]>='000001ae:00000074:0001' and [current lsn]<= '00000...

记一次数据库的优化

前几天公司应用后台更新版本,晚上发版,测试 到了12点过,测试的差不多没有问题,其他同事都回家了,我和所谓的主管(要好的朋友)不想回去了,就留在的公司过夜。 第二天起来,我戳了一眼,没有问题,结果到了8点多,团队群里就报登录界面显示不了验证码。(登录需要输入验证码) 迅速的就开始进行问题的检查,因为是验证码无法显示,于是就定位到处理登录的工程account...

拒绝了对对象 'sp_sdidebug'(数据库 'master',所有者 'dbo')的 EXECUTE 权限

在.net里应用数据库SQL SERVER的调用,有时会出现message:拒绝了对对象 'sp_sdidebug'(数据库 'master',所有者 'dbo')的 EXECUTE 权限sp_sdidebug这个扩展存储过程是应用在调试时应用的存储过程,在查询分析器里做SQL调试有个前提就是要确保具有执行 sp_sdidebug扩展过程的权限。解决这个问...