Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7217字,纯文字阅读大概需要11分钟。
内容图文
![Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇](/upload/InfoBanner/zyjiaocheng/600/4ff07cabe0794788b83659908c39d1a1.jpg)
Hello,大家好!俺回来啦,最近比较忙,憋了很久的[进阶版]博客之数据篇,终于出来了!下面就开始为大家介绍下如何搭建进阶版博客的数据篇,主要涉及数据库和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. 官网下载Mysql安装包
https://dev.mysql.com/downloads/mysql/
2. 解压安装包
3. 创建my.ini文件
内容如下:
[mysqld]
basedir=F:\mysql\mysql-8.0.15-winx64
datadir=F:\mysql\mysql-8.0.15-winx64\data
4. 创建Mysql数据库
5. 启动Mysql数据库服务
6. 找到初始密码
目录:F:\mysql\mysql-8.0.15-winx64\data
文件:DESKTOP-SSCLB77.err
备注:在mysql8的根目录下会生成一个data文件夹,里面有个以.err 结尾的文件,初始密码就在这个文件里。
7. 修改root密码
8. 创建进阶版个人博客的数据库
F:\mysql\mysql-8.0.15-winx64\bin>mysql?-u?root?-p
Enter?password:?******
Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?\g.
Your?MySQL?connection?id?is?9
Server?version:?8.0.15?MySQL?Community?Server?-?GPL
Copyright?(c)?2000,?2019,?Oracle?and/or?its?affiliates.?All?rights?reserved.
Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?its
affiliates.?Other?names?may?be?trademarks?of?their?respective
owners.
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>?exit
Bye
02
创建和配置[进阶版]博客项目
1. 创建pyblog项目
2. 创建APP(blog)
3. 查看此时的目录结构
4. 配置settings.py
4.1 添加主机的IP地市
将?
ALLOWED_HOSTS?=?[]
改为如下:
ALLOWED_HOSTS?=?['192.168.1.107','192.168.1.105'] ? ?
4.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',
]
4.3 修改语言和时区
将
LANGUAGE_CODE?=?'en-us'
TIME_ZONE?=?'UTC'
改为如下:
ANGUAGE_CODE?=?'zh_hans'
TIME_ZONE?=?'Aisa/Shanghai'
5. 测试网站的IP和端口是否OK
显示安装成功,祝贺!
6. settings.py配置Mysql数据库
7. 创建中介文件
8. models.py添加博客表
from?django.db?import?models
from?django.contrib.auth.models?import?User
from?django.urls?import?reverse
class?Category(models.Model):
????name?=?models.CharField(max_length=128,unique=True)
????def?__str__(self):
????????return?self.name
class?Tag(models.Model):
????name?=?models.CharField(max_length=128,unique=True)
????def?__str__(self):
????????return?self.name
class?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']
9. 创建数据库和同步Django间的中介文件
执行"python manage.py makemigrations blog",让此模型生效
执行“python manage.py migrate”,同步更新数据库内容。
10. 启动 admin 的管理界面
1)打开网页http://192.168.1.105:8000/admin/,登陆!
2)填写信息
3)查看文件的概要情况
03
微优化[进阶版]博客之数据篇
管理页面目前是使用英文显示表名,能否用中文显示表名呢?当然啦,不是说英文不OK!只是我们在管理页面操作时,能不能为他们加上别名呢?那样会为我们高效管理,那下面就开始为大家讲解下吧。
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.name
10
11????class?Meta:
12????????verbose_name?=?'博客分类'
13????????verbose_name_plural?=?verbose_name
14
15
16class?Tag(models.Model):
17????name?=?models.CharField('标签',?max_length=128,unique=True)
18
19????def?__str__(self):
20????????return?self.name
21
22????class?Meta:
23????????verbose_name?=?'博客标签'
24????????verbose_name_plural?=?verbose_name
25
26
27class?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)
38
39????def?__str__(self):
40????????return?self.title
41
42????def?increase_visiting(self):
43????????self.visitnum?+=?1???????????????????????????????????????????????????????????
44????????self.save(update_fields=['visitnum'])????????????????????????????????????????
45
46????class?Meta:
47????????ordering?=?['-created_time']
48????????verbose_name?=?'博客正文'?
49????????verbose_name_plural?=?verbose_name
1.1 重点代码详解
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表,并且是多选。
6)第36行 created_time = models.DateTimeField('创建时间',auto_now_add=True)
时间类型,以当前时间为准。
7)第47行 ordering = ['-created_time'] 该表显示顺序,以创建时间倒序排列。
8)第48行 Blogcontent表在管理页面显示表名"博客正文"。
2. 查看管理页面
管理页面原来显示的是英文表名,现在显示为中文表名
总结
Django架站数据篇,首先数据库的模型要先规划好,其次model模块跟着表结构走,一般就不会有什么问题。![Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇 - 文章图片](/upload/getfiles/0001/2021/4/30/20210430125226784.jpg)
——————我是安老师下期预告的分割线——————
其实,Django架站数据篇并不算很难,难的是网址的对应和委派,想要玩的更溜一点,前端页面也搞起来。那下节分享就为大家介绍如何将数据在前端显示出来,老铁们敬请期待。最后,非常感谢大家的阅读,谢谢!是你们的不断地关注,给与我莫大的动力,非常感谢!
内容总结
以上是互联网集市为您收集整理的Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇全部内容,希望文章能够帮你解决Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。