基于Django构建Blog(09)-Templates续

base.html模板中使用了自定义Template tag:GetCategories和GetTags,这里说一下具体实现。

按照Django的规定,自定义Template tag需要在templatetags包中实现,这个templatetags包要放在相应的App包内。对于本工程来说就是放在"apps/blog/"目录中,目录结构如下图所示:

代码在 ...


基于Django构建Blog(08)-Templates

对于Templates的实现,可以使用Bootstrap中的资源(html/css/js),稍加修改即可。另外,这几个网站也提供了大量的优秀资源,关注一下: DjangoTemplates是可以继承的,对于上一篇中创建的几个模板文件 ...


基于Django构建Blog(07)-Views

业务逻辑将在Views中实现,在Views中会调集相应的ModelsTemplates生成最终的页面提供给用户。

这里所描述的是需要我们自己实现的部分,前面已经提到,内容管理直接使用Django自带的admin site即可,而文章搜索则借助于第三方app:Haystack来实现。

View通常表现为一个简单的函数或类中的某个方法,一个函数致力于完成一项业务,按照前面的设计,系统至少需要实现如下的几个View:

  • 主页(Home):按时间先后给出已发布的文章,最近发布的排在前面
  • 档案(Archives):与Home类似,只是显示方式不同,文章要按照年份进行归类
  • 标签(ArticlesOfTag):给出属于指定Tag的全部文章
  • 分类(ArticlesOfCategory):给出属于指定Category的全部文章
  • 文章(ArticleDetail):给出指定文章的完整内容

每个View对应一个Template ...


基于Django构建Blog(06)-Admin

对于内容管理的部分,Django已经提供了一个现成的admin site,这是Django自带的一个app,工程创建之初就能在xblog/settings.py文件的INSTALLED_APPS里找到它,也就是说默认是被启用的,除非需要对其进行个性化的定制(参考:The Django admin site),否则只需在apps/blog/admin.py文件中加入下面的内容就足够了:

1
2
3
4
5
6
7
8
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.contrib import admin
from .models import Article, Tag, Category

admin.site.register(Article)
admin.site.register(Tag)
admin.site.register(Category)

这里只描述基本的实现,定制的部分可以查看io的源码 ...


基于Django构建Blog(05)-Models

先从Models做起,实现设计类图中的类,代码放在apps/blog/models.py文件中。

实现了各个Model后,就可以执行如下的命令完成数据表的创建:

python manage.py makemigrations  
python manage.py migrate

models.py ...


基于Django构建Blog(04)-着手实现

创建Django工程

工程名定为"xblog":

django-admin.py startproject xblog

创建完成后,需要再手动添加几个目录,这些目录并非Django的要求,只是本工程的设定而已,工程的最终结构如下: 这其中的"apps"、"static"和 ...