龙空技术网

Python自动化运维系列:Django搭建个人博客之数据篇

程序员Chanson的日记 170

前言:

如今看官们对“个人博客系统概要设计说明书”都比较着重,大家都需要剖析一些“个人博客系统概要设计说明书”的相关文章。那么小编在网摘上收集了一些对于“个人博客系统概要设计说明书””的相关资讯,希望咱们能喜欢,朋友们快快来学习一下吧!

Hello,大家好!下面就开始为大家介绍下如何搭建进阶版博客,正所谓兵马未动,粮草先行。

搭建个人博客,主要有两个方面,一个是MTV框架中的M,即Models层,主要涉及Models层和数据库。另外一个方面就是TV层。

今天,小安Sir就为大家分享下Django的Models层和数据库,难吗?不难!

为什么不一次性写完,因为太长了!

适当地对知识体系进行分解,有利于我们对知识吸收消化。

本文大纲

一. 环境信息

1.1 主机信息

操作系统:windows 10

主机IP地址:192.168.1.107/192.168.1.105

1.2 软件版本

Python版本:3.7.0

数据库版本:Mysql 8.0.15

1.3 pip模块

Django版本:2.1.7

PyMysql版本:0.9.3

二. 基本步骤

1. 快速安装Mysql数据库

2. 创建和配置个人博客

3. 微优化个人博客之数据篇

01 快速安装Mysql数据库

1.1 官网下载Mysql安装包

1.2 解压安装包

1.3 创建my.ini文件

内容如下:

[mysqld]

basedir=F:\mysql\mysql-8.0.15-winx64

datadir=F:\mysql\mysql-8.0.15-winx64\data

1.4 创建Mysql数据库

1.5 启动Mysql数据库服务

1.6 找到初始密码

目录:F:\mysql\mysql-8.0.15-winx64\data

文件:DESKTOP-SSCLB77.err

备注:在mysql8的根目录下会生成一个data文件夹,里面有个以.err 结尾的文件,初始密码就在这个文件里。

1.7 修改root密码

1.8 创建进阶版个人博客的数据库

F:\mysql\mysql-8.0.15-winx64\bin>mysql -u root -pEnter password: ******Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 9Server version: 8.0.15 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database blog;Query OK, 1 row affected (0.06 sec)mysql> show databases;+--------------------+| Database                 |+--------------------+| information_schema || blog               || mysql              || performance_schema || sys                |+--------------------+5 rows in set (0.03 sec)mysql> exitBye

02 创建和配置个人博客项目

2.1 创建pyblog项目

2.2 创建APP(blog)

2.3 查看此时的目录结构

2.4 配置settings.py

1) 添加主机的IP地址

#将 ALLOWED_HOSTS = []#改为如下:ALLOWED_HOSTS = ['192.168.1.107','192.168.1.105']     

2) 添加APP(blog)模块

#将INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',]#改为如下:INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog',]

3) 修改语言和时区

#将LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'#改为如下:ANGUAGE_CODE = 'zh_hans'TIME_ZONE = 'Aisa/Shanghai'

2.5 测试网站的IP和端口是否OK

显示安装成功!

2.6 settings.py配置Mysql数据库

2.7 创建中介文件

2.8 models.py添加博客表

from django.db import modelsfrom django.contrib.auth.models import Userfrom django.urls import reverseclass Category(models.Model):    name = models.CharField(max_length=128,unique=True)    def __str__(self):        return self.nameclass Tag(models.Model):    name = models.CharField(max_length=128,unique=True)    def __str__(self):        return self.nameclass Blogcontent(models.Model):    title = models.CharField(max_length=128)    author = models.CharField(max_length=128)    image = models.ImageField(upload_to='blog_image',null=True,blank=True)    body = models.TextField()    abstract = models.TextField(max_length=256,null=True,blank=True)    visitnum = models.PositiveIntegerField(default=0)    category = models.ManyToManyField('Category')    tags = models.ManyToManyField('Tag')    created_time = models.DateTimeField(auto_now_add=True)    modifyed_time = models.DateTimeField(auto_now=True)    def __str__(self):        return self.title    def increase_visiting(self):        self.visitnum += 1        self.save(update_fields=['visitnum'])    class Meta:        ordering = ['-created_time']

2.9 创建数据库和同步Django间的中介文件

执行"python manage.py makemigrations blog",让此模型生效

执行“python manage.py migrate”,同步更新数据库内容。

2.10 启动 admin 的管理界面

1) 打开网页,登陆!

2) 填写信息

3) 查看文件的概要情况

03 微优化个人博客数据篇

管理页面目前是使用英文显示表名,能否用中文显示表名呢?

当然啦,不是说英文不OK!只是我们在管理页面操作时,能不能为他们加上别名呢?方便我们高效管理,请见下面分享。

3.1 修改models.py

 1from django.db import models 2from django.contrib.auth.models import User 3from django.urls import reverse 4 5class Category(models.Model): 6    name = models.CharField('分类',max_length=128,unique=True)   7 8    def __str__(self): 9        return self.name1011    class Meta:12        verbose_name = '博客分类'13        verbose_name_plural = verbose_name141516class Tag(models.Model):17    name = models.CharField('标签', max_length=128,unique=True)1819    def __str__(self):20        return self.name2122    class Meta:23        verbose_name = '博客标签'24        verbose_name_plural = verbose_name252627class Blogcontent(models.Model):28    title = models.CharField('文章标题',max_length=128)29    author = models.CharField('作者',max_length=128)  30    img = models.ImageField(upload_to='blog_image',null=True,blank=True,verbose_name='博客配图')31    body = models.TextField('正文')32    abstract = models.TextField('摘要',max_length=256,null=True,blank=True)33    visitnum = models.PositiveIntegerField('访问量',default=0)              34    category = models.ManyToManyField('Category',verbose_name='博客分类')   35    tags = models.ManyToManyField('Tag',verbose_name='标签')                36    created_time = models.DateTimeField('创建时间',auto_now_add=True)37    modifyed_time = models.DateTimeField('修改时间',auto_now=True)3839    def __str__(self):40        return self.title4142    def increase_visiting(self):43        self.visitnum += 1                                                           44        self.save(update_fields=['visitnum'])                                        4546    class Meta:47        ordering = ['-created_time']48        verbose_name = '博客正文' 49        verbose_name_plural = verbose_name

重点代码详解

1) 第27行

class Blogcontent(models.Model) 定义表名。

2) 第28行

title = models.CharField('文章标题',max_length=128) 定义该表名的列为title,字符串长度为128,中文显示“文章标题”。

3) 第30行

img = models.ImageField(upload_to='blog_image' 图片类型,

上传的图片文件夹在项目根目录的blog_image目录。

4) 第32行

abstract = models.TextField为文本框。

5) 第33行

visitnum = models.PositiveIntegerField 该列为自增长列。

6) 第34行

category = models.ManyToManyField('Category... 该列引用Category表,并且是多选。

7) 第36行

created_time = models.DateTimeField('创建时间',auto_now_add=True)时间类型,以当前时间为准。

8) 第47行 ordering = ['-created_time'] 该表显示顺序,以创建时间倒序排列。

9) 第48行 Blogcontent表在管理页面显示表名"博客正文"。

3.2 查看管理页面

管理页面原来显示的是英文表名,现在显示为中文表名

04 总结

Django的数据篇就分享到这里了,本章节只需关注如何创建Models.py和如何将其与数据库关联起来,千万不要想太多喔!

下篇文章就会分享如何搭建前端的界面,想想就很激动呢!还等什么?赶紧收藏起来实操起来吧!

最后,非常感谢大家的阅读,谢谢!是您的关注,给予我强大的动力,非常感谢!

[微信公众号:python自动化运维],关注我,优质干货,为您第一时间送达!

标签: #个人博客系统概要设计说明书 #个人博客系统概要设计说明书怎么写