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模块跟着表结构走,一般就不会有什么问题。——————我是安老师下期预告的分割线——————
其实,Django架站数据篇并不算很难,难的是网址的对应和委派,想要玩的更溜一点,前端页面也搞起来。那下节分享就为大家介绍如何将数据在前端显示出来,老铁们敬请期待。最后,非常感谢大家的阅读,谢谢!是你们的不断地关注,给与我莫大的动力,非常感谢!