美文网首页
Django快速搭建博客(三)

Django快速搭建博客(三)

作者: lmwxhyy | 来源:发表于2017-10-09 17:32 被阅读0次

创建 Django 博客的数据库模型

设计博客的数据库表结构

博客最主要的功能就是展示文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库。把写好的文章永久地保存在数据库里,当用户访问博客时,Django 就去数据库里把这些数据取出来展现给用户。

博客的文章应该含有标题、正文、作者、发表时间等数据。一个更加现代化的博客文章还希望它有分类、标签、评论等。为了更好地存储这些数据,需要合理地组织数据库的表结构。

本例博客初级版本主要包含博客文章,文章会有分类以及标签。一篇文章只能有一个分类,但可以打上很多标签。

数据库存储的数据其实就是表格的形式,例如存储博客文章的数据库表长这个样子:

id         标题        正文         发表时间           分类               标签

1           title1     text1         2017-2-23         Django          学习

2           title2     text2        2016-3-24          Django         学习

3           title3     text3         2016-2-26          Python      Python 学习

其中文章 ID 是一个数字,唯一对应着一篇文章。当然还可以有更多的列以存储更多相关数据,这只是一个最基本的示例。

数据库表设计成这样其实已经可以了,但是稍微分析一下就会发现一个问题,这 3 篇文章的分类和标签都是相同的,这会产生很多重复数据,当数据量很大时就浪费了存储空间。

不同的文章可能它们对应的分类或者标签是相同的,所以我们把分类和标签提取出来,做成单独的数据库表,再把文章和分类、标签关联起来。下面分别是分类和标签的数据库表:

分类id      分类名

1              Django

2              Python

标签id          标签名

1                  学习

2               Python 学习

编写博客模型代码

以上是自然语言描述的表格,数据库也和编程语言一样,有它自己的一套规定的语法来生成上述的表结构,这样才能把数据存进去。一般来说这时候应该先去学习数据库创建表格的语法,再回来写 Django 博客代码。但是 Django 告诉我们不用这么麻烦,它已经帮我们做了一些事情。Django 把那一套数据库的语法转换成了 Python 的语法形式,只要写 Python 代码就可以了,Django 会把 Python 代码翻译成对应的数据库操作语言。用更加专业一点的说法,就是 Django 为我们提供了一套 ORM(Object Relational Mapping)系统。

例如分类数据库表,Django 只要求这样写:

Category就是一个标准的 Python 类,它继承了models.Model类,类名为Category。Category类有一个属性name,它是models.CharField的一个实例。

这样,Django 就可以把这个类翻译成数据库的操作语言,在数据库里创建一个名为 category 的表格,这个表格的一个列名为 name,还有一个列 id。Django 则会自动创建。可以看出从 Python 代码翻译成数据库语言时其规则就是一个 Python 类对应一个数据库表格,类名即表名,类的属性对应着表格的列,属性名即列名。

我们需要 3 个表格:文章(Post)、分类(Category)以及标签(Tag),下面就来分别编写它们对应的 Python 类:

相关文章

  • Django快速搭建博客(三)

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

  • Python学习笔记-第十八天

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

  • Django 2.0 快速搭建博客

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

  • Django快速搭建博客(六)

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

  • 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 请求与响...

  • python Django学习资料

    Django资源: Django 最佳实践 Django搭建简易博客教程 The Django Book 中文版 ...

网友评论

      本文标题:Django快速搭建博客(三)

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