一、RSS功能
Django是一个全面型框架, 很多功能都可以直接找到, 对于RSS功能, 可以从其中的高层框架的聚合Feed框架中找到(The syndication feed framework)
上层Feed生成框架可以直接应用Feed类, 我们可以直接继承Feed在其中定义自己的方法。
1、定义类
在my_blog/article/views.py中定义类,加入下面两段代码:
from django.contrib.syndication.views import Feed
class RSSFeed(Feed) :
title = "RSS feed - article"
link = "feeds/posts/"
description = "RSS feed - blog posts"
def items(self):
return Article.objects.order_by('-date_time')
def item_title(self, item):
return item.title
def item_pubdate(self, item):
return item.date_time
def item_description(self, item):
return item.content
2、设置url
在my_blog/my_blog/urls.py中设置对应的url,添加如下二行代码:
from article.views import RSSFeed
url(r'^feed/$', RSSFeed(), name = "RSS"),
3、添加RSS按钮
修改my_blog/templates/base.html, 在其中添加RSS按钮,添加如下代码:
<li class="nav-item">
<a class="button-success pure-button" href="{% url 'RSS' %}">RSS</a>
</li>
添加后的效果图:

4、测试效果
保存后, 在浏览器中输入http://localhost:9000可以看到新增的RSS按钮, 点击看以看到对应的效果。
二、分页功能
分页功能是博客上必须的功能之一,试想一下,如果你的博客有上百篇文章,你想让它都显示在一页么?
下面我们就来实现分页的功能,在这个实例中我们设定每页显示2篇文章,实际运用时大家可以根据需要设定每页显示文章的数量。
1、修改views.py
修改my_blog/article/views.py中的home函数,首先导入模关模块:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
然后将home函数修改成如下形式:
def home(request):
posts = Article.objects.all() #获取全部的Article对象
paginator = Paginator(posts, 2) #每页显示两个
page = request.GET.get('page')
try :
post_list = paginator.page(page)
except PageNotAnInteger :
post_list = paginator.page(1)
except EmptyPage :
post_list = paginator.paginator(paginator.num_pages)
return render(request, 'home.html', {'post_list' : post_list})
修改后的效果

2、修改home.html模板文件
修改my_blog/templates下的home.html,加入以下代码:
{% if post_list.object_list and post_list.paginator.num_pages > 1 %}
<div>
<ul class="pager">
{% if post_list.has_previous %}
<li><a href="?page={{ post_list.previous_page_number }}">Pre Page</a></li>
{% endif %}
{% if post_list.has_next %}
<li><a href="?page={{ post_list.next_page_number }}">Next Page</a></li>
{% endif %}
</ul>
</div>
{% endif %}
修改后的效果:

3、查看成果
通过命令启动web服务,在浏览器中输入http://localhost:9000/,可以看到首页只显示两篇文章,在最下面有新增的“Next Page”按钮, 点击即可进入到下一页。
三、实验总结
终于!我们完成了一个博客的基本内容。我们完成的功能:
- Django-bootstrap-admin优化后台管理, Pure只做前端
- markdown和代码高亮
- aboutme功能建设完成
- 分类
- 标签(需要完善)
- 归档
- 搜索
- read more功能
- RSS功能
- 分页功能
博客基本建好了, 未来我们还有更多的工作要做:
- 将view封装到类中
- 重写增删改查代码
- 重写前段模板
- 重新设计数据库关系
- 自定义留言板(连接数据库)
- 添加注册/登陆功能(Form)
- 做成社区(更多设计思考)
Django 教程
Django 教程之一:创建网站项目
Django 教程之二:数据库、后台
Django 教程之三:模板的工作机制
Django 教程之四:创建模板
Django 教程之五:动态URL
Django 教程之六:Markdown和代码高亮
Django 教程之七:添加评论系统
Django 教程之八:博客的归档及其他页面
Django 教程之九:搜索和ReadMore
Django 教程之十:RSS和分页
Django 教程之十一:创建自己的模板
Django 教程之十二:修改导航栏
Django 教程之十三:改进分页功能
Django 教程之十四:服务器篇
Django 教程之十五:上传代码
Django 教程之十六:配置网站
原载:蜗牛博客
网址:http://www.snailtoday.com
尊重版权,转载时务必以链接形式注明作者和原始出处及本声明。


