关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
昨天初步搭建blog。今天准备修改首页(博客列表)的样式。预计弄出多页的形式,5-7篇博文为1页。
刚开始的部分比较简单,我基本很快带过。
我初步设计Blog应用模型如下,后面若加入什么新功能或修改什么再拓展。一共3个模型:Author,Blog,Tag
打开models.py,导入相关的模块
#coding:utf-8 from django.db import models
Author是作者模型,用于标记是谁发布的。有3个字段,都是基本信息。邮箱可以用于后面发送评论通知。
class Author(models.Model): """博客作者模型""" name = models.CharField(max_length=20) email = models.EmailField() descript = models.TextField() def __unicode__(self): return u'%s' % (self.name)
Blog是博客模型,也是最核心的模型。其中包含了不少字段类型。
class Blog(models.Model): """博客""" caption = models.CharField(max_length=50) author = models.ForeignKey(Author) #一对一外键,关联作者模型 tags = models.ManyToManyField(Tag,blank=True) #多对多字段,绑定下面的Tag模型 content = models.TextField() #Text长文本字段,可以写很多内容 publish_time = models.DateTimeField(auto_now_add=True) #日期,新增自动写入 update_time = models.DateTimeField(auto_now=True) #日期,修改自动更新 recommend = models.BooleanField(default=False) #布尔字段,我用于标记是否是推荐博文 def __unicode__(self): return u'%s %s %s' % (self.caption, self.author, self.publish_time) class Meta: #排序 ordering=['-publish_time']
Tag是分类标签模型,用于给博客分类。一篇博文可能对应多种分类。
class Tag(models.Model): """博客分类""" tag_name=models.CharField(max_length=20) create_time=models.DateTimeField(auto_now_add=True) def __unicode__(self): return u'%s' % (self.tag_name)
这里每一篇博客都需要一个或多个分类标签tag。所以Blog模型需要一个多对多字段和Tag模型关联。
若需要通过tag获取有哪些博文,这种多对多字段需要用tag.blog_set.all()这种方式。另外外键字段筛选也是如此。
另外,还整合了模板文件。整个网站有个模板文件,用于引用公共的js,css等。
每个应用都需要一个基本的模板文件,用于显示导航,然后博客文章显示需要单独一个模板文件。具体可参考这两篇文章:
django 简易博客开发 3 静态文件、from 应用与自定义
这个博主的前面的文章还是可以的,到了后面一次性加入了很多模板文件的内容就乱套了。
若你不大会用js、css等,可以考虑用Bootstrap。
yangyangzijun
网址响应时间较长
2018-10-29 20:53 回复