我的网站搭建(第2天) 博客应用

  • 发布时间:2015年12月4日 11:37
  • 作者:杨仕航
* 该文是基于Python2.7开发的,最新Python3.x和Django2.x视频教程可以前往 >> Django2.0视频教程

昨天初步搭建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 简易博客开发 2 模板和数据查询

django 简易博客开发 3 静态文件、from 应用与自定义


这个博主的前面的文章还是可以的,到了后面一次性加入了很多模板文件的内容就乱套了。

若你不大会用js、css等,可以考虑用Bootstrap。


上一篇:我的网站搭建(第3天) Django分页器

下一篇:我的网站搭建(第1天) Hello Django

评论列表

yangyangzijun

yangyangzijun

网址响应时间较长

2018-10-29 20:53 回复

新的评论

清空