Django搭建个人博客:创建 Django 博客的数据库模型

Django 采用了MVC的软件设计模式,即模型M,视图V和控制器C

  • 模型models: 负责处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
  • 模板(Template),即业务逻辑层:层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
  • 视图(View),即表现层:存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

数据库表结构

  1. 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库。我们把写好的文章永久地保存在数据库里,当用户访问我们的博客时,django 就去数据库里把这些数据取出来展现给用户。
  2. 一篇现代化文章需要有标题,正文,作者,分类,标签,发布时间,评论等等。为了更好的方便管理,我们需要合理的组织数据表结构。
  3. 下面我们来看看数据库表长啥样
Django搭建个人博客:创建 Django 博客的数据库模型

数据库表结构

  • 一篇文章对应的一个唯一的ID,当然还可以有更多的列以存储更多相关数据,这只是一个最基本的示例。
  • 数据库也和编程语言一样,它本身也是一门语言,有它自己的一套规定的语法来生成上述的表结构,这样我们才能把数据存进去。一般来说这时候我们应该先去学习数据库创建表格的语法,再回来写我们的 django 博客代码了。但是 django 告诉我们不用这么麻烦,它已经帮我们做了一些事情。django 把那一套数据库的语法转换成了 Python 的语法形式,我们只要写 Python 代码就可以了,django 会把 Python 代码翻译成对应的数据库操作语言。感受一下Django的强大吧,用更加专业一点的说法,就是 django 为我们提供了一套 ORM(Object Relational Mapping)对象关系映射系统。
  • 在 Django 里写Web应用并不需要你直接去操作数据库,而是定义好模型(用Python语法就可以了!),模型中包含了操作数据库所必要的命令。也就是说你只需要定义数据模型,其它的底层代码都不用关心,它们会自动从模型生成。

下面我们开始编写模版



编写博客模型代码

进入 article/models.py

<code>from django.db import models # 导入模型
from django.contrib.auth.models import User # 导入django自带的用户模型
from django.utils import timezone

class Category(models.Model):
name = models.CharField(max_length=30)

class Tags(models.Model):
name = models.CharField(max_length=30)


class Article(models.Model):

# 标题
title = models.CharField(max_length=100)
# 正文
body = models.TextField()
# 作者
author = models.ForeignKey(User,on_delete=models.CASCADE)
# 创建时间
created_time= models.DateTimeField(default=timezone.now)
# 文章摘要
excerpt = models.CharField(max_length=200, blank=True)
# 分类
category = models.ForeignKey(Category,on_delete=models.CASCADE)
# 标签
tags = models.ManyToManyField(Tags,blank=True)
/<code>

代码解读:

  • Article(文章)类继承了models.py里面的Model类
  • title(标题) 数据类型是CharField,允许最大长度max_length=100
  • body (正文)数据类型是TextField,不限制长度
  • author(作者)数据类型是ForeignKey,这里 User 是从 django.contrib.auth.models 导入的,django.contrib.auth 是 django 内置的应用,专门用于处理网站用户的注册、登录等流程。这里我们通过 ForeignKey 把文章和 User关联了起来,因为我们规定一篇文章只能有一个作者,而一个作者可能会写多篇文章,因此这是一对多的关联关系
  • created_time(创建时间):数据类型是DateTimeField,表示时间字段
  • excerpt(文章摘要):数据类型是CharField,允许最大长度max_length=200,django内部规定CharField字段为必填字段,但是有些文章不需要摘要,这里我们用blank=True,表示参数可以为空值。

好啦,基本的模型编写完成~

总结

  • 本章学习了Django的基本设计模型。
  • 我们了解了数据表内部是什么样的结构。

下一章我们开始将数据迁移以及创建django后台管理

如果有疑问可以私聊或者在下方留言,我会及时解决与答复。


Django搭建个人博客:创建 Django 博客的数据库模型

上一篇


分享到:


相關文章: