Django 快速搭建博客 第三节

作者: 简书用户9527 | 来源:发表于2017-11-08 23:46 被阅读5次
上一节我们已经能在pycharm下新建了blog app了, 这个时候,我们需要设计一下博客的数据库设计
  1. 关于数据库表的设计,作为新手的我们并不需要要求懂太多稍微的懂一些也就可以了,毕竟数据库也是需要有一定的功底的,

这里我们依据博客学习,将博客表设计为三份:文章表,标签表,分类表

结构类似于这样子:


文章表.png
分类与标签表.png

图片也是截的,比较丑,这里我按照我个人的理解,说一下:

每一篇文章都有对应的文章id,正文,发表时间,分类,标签
这很合理,我们能理解,但是!每篇文章都有些分类,标签,这样会产生重复的数据,造成资源的浪费,所以我们把分类与标签提取出来,单独做成表,再跟文章相关联起来。这就有了图二的内容。

2 接下来我们开始在blog/models下进行数据库表的创建(注意:因为django使用的orm系统(Object Relational Mapping ))
贴上这里的三个表结构:

from django.db import models

# 专门用于处理网站用户的注册、登录等流程,User 是 Django 为我们已经写好的用户模型。
from django.contrib.auth.models import User
# Create your models here.


# 分类数据库表
class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

# 标签数据库
class Tag(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

# 文章数据库
class Post(models.Model):
    '''
    文章数据库包含字段:标题title 正文body  创建时间created_time
    修改时间modified_time 摘要excerpt  分类category 标签tag 作者author
    '''
    title = models.CharField(max_length=100)

    body = models.TextField()

    created_time = models.DateTimeField()

    modified_time = models.DateTimeField()

    # blank 为true表示参数可以为空值za
    excerpt = models.CharField(max_length=200,blank=True)

    # ForeignKey,即一对多的关联关系(一个分类下可以有多篇文章)
    category = models.ForeignKey(Category)

    # 而对于标签来说,一篇文章可以有多个标签,同一个标签下也可能有多篇文章,
    # 所以我们使用 ManyToManyField,表明这是多对多的关联关系。文章可以没有标签,所以blank可以为true
    tag = models.ForeignKey(Tag,blank=True)

    # 文章作者,这里 User 是从 django.contrib.auth.models 导入的。
    # django.contrib.auth 是 Django 内置的应用,专门用于处理网站用户的注册、登录等流程,
    # User 是 Django 为我们已经写好的用户模型。
    # 这里我们通过 ForeignKey 把文章和 User 关联了起来。
    # 因为我们规定一篇文章只能有一个作者,而一个作者可能会写多篇文章,因此这是一对多的关联关系,和 Category 类似
    author = models.ForeignKey(User)

    def __str__(self):
        return self.title

以后有机会会改善代码的显示界面,如果支持的情况下,我们这里再贴上代码的图片

图片.png 图片.png

3 同步数据库:

图片.png 图片.png

如果想知道django是如何操作数据库的,可以使用命令:

图片.png

这里再贴一下使用数据库的命令:

python manage.py makemigrations
python manage.py migrate

当我们看到Applying blog.0001_initial ....ok 就说明同步数据库成功了。

python manage.py sqlmigrate blog 0001

django命令行知识:

1 同步数据库: python manage.py makemigrations
python manage.py migrate

2 查看django如何操作数据库:python manage.py sqlmigrate blog 0001

以上就是建数据库表的设计。

相关文章

  • Django 快速搭建博客 第三节

    上一节我们已经能在pycharm下新建了blog app了, 这个时候,我们需要设计一下博客的数据库设计 关于数据...

  • Python学习笔记-第十八天

    Django官方学习笔记Django快速搭建blogrunoob Django教程vim python搭建1vim...

  • Django 2.0 快速搭建博客

    本文仅是用于操作记忆,长时间不用容易忘记,本来是打算云笔记里写好自己看的,可是云笔记里markdown图片比较麻烦...

  • Django快速搭建博客(六)

    在此之前我们已经编写了 Blog 的首页视图,并且配置了 URL 和模板,让 Django 能够正确地处理 HTT...

  • Django快速搭建博客(三)

    创建 Django 博客的数据库模型 设计博客的数据库表结构 博客最主要的功能就是展示文章,它需要从某个地方获取博...

  • Django快速搭建博客(一)

    开发环境的系统平台为 Windows 7 (64 位),Python 版本为 3.5.1 (64 位),Djang...

  • Django快速搭建博客(二)

    建立博客应用 已经建立了 Django 博客的项目工程,并且成功地运行了它。不过到目前为止这一切都还只是 Djan...

  • Django快速搭建博客(四)

    迁移数据库 为了让 Django 完成翻译,创建好这些数据库表,我们再一次请出工程管理助手 manage.py。切...

  • Django快速搭建博客(七)

    在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有...

  • Django快速搭建博客(五)

    Django 博客首页视图 Django 处理 HTTP 请求 Web 应用的交互过程其实就是 HTTP 请求与响...

网友评论

    本文标题:Django 快速搭建博客 第三节

    本文链接:https://www.haomeiwen.com/subject/cdsumxtx.html