Django blog - 03 -创建Django博客博客的数据库模型
2017-09-18 20:18
555 查看
设计博客的数据库表结构
把写好的文章永久地保存在数据库里,当用户访问我们的博客时,Django
就去数据库里把这些数据取出来展现给用户。
博客的文章应该含有标题、正文、作者、发表时间等数据
一个更加现代化的博客文章还希望它有分类、标签、评论等
博客初级版本主要包含博客文章,文章会有分类以及标签。一篇文章只能有一个分类,但可以打上很多标签。
数据库存储的数据其实就是表格的形式,例如存储博客文章的数据库表长这个样子:
其中文章 ID
是一个数字,唯一对应着一篇文章。
这 3
篇文章的分类和标签都是相同的,这会产生很多重复数据,当数据量很大时就浪费了存储空间。
不同的文章可能它们对应的分类或者标签是相同的,所以我们把分类和标签提取出来,做成单独的数据库表,再把文章和分类、标签关联起来。下面分别是分类和标签的数据库表:
编写博客模型代码
以上是自然语言描述的表格,数据库有一套规定的语法来生成上述的表结构,把数据存进去。
Django 把数据库的语法转换成了 Python
的语法形式,只要写Python
代码,Django
会把 Python
代码翻译成对应的数据库操作语言。专业的说,Django
为我们提供了一套 ORM(Object Relational
Mapping)系统。
编写 3
个表格:文章(Post)、分类(Category)以及标签(Tag)对应的
Python 类。
模型的代码通常写在相关应用的 models.py
文件里。
Django 内置全部类型文档:https://docs.djangoproject.com/en/1.10/ref/models/fields/#field-types
数据库关系文档:https://docs.djangoproject.com/en/1.10/topics/db/models/#relationships
下一篇《Django blog - 04 - Django 翻译:迁移数据库》
把写好的文章永久地保存在数据库里,当用户访问我们的博客时,Django
就去数据库里把这些数据取出来展现给用户。
博客的文章应该含有标题、正文、作者、发表时间等数据
一个更加现代化的博客文章还希望它有分类、标签、评论等
博客初级版本主要包含博客文章,文章会有分类以及标签。一篇文章只能有一个分类,但可以打上很多标签。
数据库存储的数据其实就是表格的形式,例如存储博客文章的数据库表长这个样子:
文章 id | 标题 | 正文 | 发表时间 | 分类 | 标签 |
1 | title 1 | text 1 | 2016-12-23 | Django | Django 学习 |
2 | title 2 | text 2 | 2016-12-24 | Django | Django 学习 |
3 | title 3 | text 3 | 2016-12-26 | Python | Python 学习 |
是一个数字,唯一对应着一篇文章。
这 3
篇文章的分类和标签都是相同的,这会产生很多重复数据,当数据量很大时就浪费了存储空间。
不同的文章可能它们对应的分类或者标签是相同的,所以我们把分类和标签提取出来,做成单独的数据库表,再把文章和分类、标签关联起来。下面分别是分类和标签的数据库表:
分类 id | 分类名 |
1 | Django |
2 | Python |
标签 id | 标签名 |
1 | Django 学习 |
2 | Python 学习 |
编写博客模型代码
以上是自然语言描述的表格,数据库有一套规定的语法来生成上述的表结构,把数据存进去。
Django 把数据库的语法转换成了 Python
的语法形式,只要写Python
代码,Django
会把 Python
代码翻译成对应的数据库操作语言。专业的说,Django
为我们提供了一套 ORM(Object Relational
Mapping)系统。
编写 3
个表格:文章(Post)、分类(Category)以及标签(Tag)对应的
Python 类。
模型的代码通常写在相关应用的 models.py
文件里。
Django 内置全部类型文档:https://docs.djangoproject.com/en/1.10/ref/models/fields/#field-types
数据库关系文档:https://docs.djangoproject.com/en/1.10/topics/db/models/#relationships
from django.db import models from django.contrib.auth.model import User # Create your models here. class Category(models.Model): """ Django 要求模型必须继承 models.Model 类 Category 只需一个简单分类名 name 即可 CharField 指定分类名 name 的数据类型,CharField是字符型 max_length 参数指定最大长度 """ name = models.CharField(max_length=100) class Tag(models.Model): name = models.CharField(max_length=100) class Post(models.Model): # 文章标题 title = models.CharField(max_length=70) # 文章正文 # Textfield 字符型存储大段文本 body = models.TextField() # 文章创建时间和最后一次更改时间 # DateTimeField 存储时间数据类型 created_time = models.DateTimeField() modified_time = models.DateTimeField() # 文章摘要 # CharField 为空报错(blank = True允许空值 excerpt = models.CharField(max_length=200, blank=True) # 分类与标签 # 一篇文章对应一个分类,一个分类对应多篇文章 # 使用ForeignKey 一对多关系 # 一篇文章对应多个标签,一个标签对应多篇文章 # ManyToManyField 多对多关系 category = models.ForeignKey(Category) tags = models.ManyToMany(Tag, blank=True) # 作者 # User 是从 django.contrib.auth.model 导入的 # django.contrib.auth:Django内置应用,处理网站用户注册、登陆等流程 # User 是 Django 写好的用户模型 author = models.ForeignKey(User)
下一篇《Django blog - 04 - Django 翻译:迁移数据库》
相关文章推荐
- 3 - 创建 Django 博客的数据库模型
- 创建 Django 博客的数据库模型
- 3 - 创建 Django 博客的数据库模型
- Django 博客 - 2 创建数据库模型
- windows创建django项目以及创建数据库的时候提示:No module named blog
- Django,数据模型创建之数据库API参考(转载)
- 用flask开发个人博客(20)—— 利用模型创建数据库
- Django项目实践(二)数据库配置和模型的创建
- 基于Django开发的SkyNet博客一——创建模型
- 建立django博客应用及数据库模型
- Django项目-数据库,模型创建
- Django,数据模型创建之数据库API参考
- 通过数据库向Django模型添加字段的示例
- 在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
- Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
- django模型——数据库(二)
- django中创建应用app并修改模型
- Django开发个人博客网站——3、使用pycharm创建博客项目
- Blog.objects.filter()反查外键,django数据库models中的跨表查询,相当于sql的join
- Django:(博客系统)使用使用mysql数据&创建post/category/tag实体,并同步到数据中