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

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

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

数据库表结构

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

数据库表结构

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

下面我们开始编写模版

编写博客模型代码

进入 article/models.py

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)

代码解读:

Article(文章)类继承了models.py里面的Model类title(标题) 数据类型是CharField,允许最大长度max_length=100body (正文)数据类型是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搭建个人博客:创建APP功能模块

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部