今天花了一些时间搭了一个博客系统,虽然并没有相关于界面的美化,但是发布是没问题的。
开发环境
操作系统:windows 7 64位
Django: 1.96
Python:2.7.11
IDE: PyCharm 2016.1
功能篇
既然是博客系统,发布的自然是博客了。让我们想想,一篇博客有什么属性。所以我们要有能添加博客,删除博客,修改博客,以及给博客发评论,贴标签,划分类等功能。
关系分析
属性
博客:标题,内容。
标签:标签名
分类:分类的名称
评论:评论人,评论人email,评论内容
关系
博客:一篇博客可以有多个标签,多个评论,属于一个分类
标签:一类标签可以赋予多篇博客,一个博客也可以由多个标签,所以是多对多的关系
分类:一个分类内部可以有多个博客,所以和博客是一对多的关系
评论:很明显一个评论属于一个博客,而一个博客可以有很多的评论,所以是一对多的关系。
模型层设计
废话不多说,根据上一步的关系分析,直接设计即可。
# coding:utf8from __future__ import unicode_literalsfrom django.db import models# Create your models here.class Catagory(models.Model): """ 博客分类 """ name = models.CharField('名称',max_length=30) def __unicode__(self): return self.nameclass Tag(models.Model): """ 博客标签 """ name = models.CharField('名称',max_length=16) def __unicode__(self): return self.nameclass Blog(models.Model): """ 博客 """ title = models.CharField('标题',max_length=32) author = models.CharField('作者',max_length=16) content = models.TextField('博客正文') created = models.DateTimeField('发布时间',auto_now_add=True) catagory = models.ForeignKey(Catagory,verbose_name='分类') tags = models.ManyToManyField(Tag,verbose_name='标签') def __unicode__(self): return self.titleclass Comment(models.Model): """ 评论 """ blog = models.ForeignKey(Blog,verbose_name='博客') name = models.CharField('称呼',max_length=16) email = models.EmailField('邮箱') content = models.CharField('内容',max_length=240) created = models.DateTimeField('发布时间',auto_now_add=True) def __unicode__(self): return self.content
数据库设置
# Database# https://docs.djangoproject.com/en/1.9/ref/settings/#databasesDATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }}
然后Django就可以根据我们刚才的模型来逆向的生成数据库底层的业务逻辑。然后就需要调用相关的命令即可。
python manage.py makemigrationspython manage.py migrate
这样,框架就会帮助我们完成底层的数据库操作了。而且不用担心表与表之间的关系。
新闻热点
疑难解答