微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python自动化运维必看系列:Django搭建[进阶版]博客之数据篇

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架站数据篇并不算很难,难的是网址的对应和委派,想要玩的更溜一点,前端页面也搞起来。那下节分享就为大家介绍如何将数据在前端显示出来,老铁们敬请期待。最后,非常感谢大家的阅读,谢谢!是你们的不断地关注,给与我莫大的动力,非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐