- Django 基本概念
- Django - 首页
- Django - 基础
- Django - 概述
- Django - 环境搭建
- Django - 创建项目
- Django - 应用生命周期
- Django - 创建视图
- Django - URL 路由
- Django - 首页页面
- Django - 模板系统
- Django - MVT
- Django - 添加主模板
- Django 管理后台
- Django 管理后台 - 界面
- Django 管理后台 - 创建用户
- Django 管理后台 - 添加模型
- Django 管理后台 - 设置显示字段
- Django 管理后台 - 更新对象
- Django 模型
- Django - 模型
- Django - 插入数据
- Django - 更新数据
- Django - 删除数据
- Django - 更新模型
- Django 静态文件
- Django - 添加静态文件
- Django - 添加 CSS 文件
- Django 进阶
- Django - 404 页面未找到
- Django - 页面重定向
- Django - 发送邮件
- Django - 通用视图
- Django - 表单处理
- Django - 文件上传
- Django - Apache 配置
- Django - Cookie 处理
- Django - Session
- Django - 缓存
- Django - 评论
- Django - RSS
- Django - AJAX
- Django 有用资源
- Django - 快速指南
- Django - 有用资源
- Django - 讨论
Django - RSS
Django 自带一个 syndication feed 生成框架。通过它,你只需继承django.contrib.syndication.views.Feed 类就可以创建 RSS 或 Atom feeds。
让我们为应用中最新的评论创建一个 feed(另见 Django - 评论框架章节)。为此,让我们创建一个 myapp/feeds.py 并定义我们的 feed(你可以将 feeds 类放在代码结构中的任何位置)。
from django.contrib.syndication.views import Feed from django.contrib.comments import Comment from django.core.urlresolvers import reverse class DreamrealCommentsFeed(Feed): title = "Dreamreal's comments" link = "/drcomments/" description = "Updates on new comments on Dreamreal entry." def items(self): return Comment.objects.all().order_by("-submit_date")[:5] def item_title(self, item): return item.user_name def item_description(self, item): return item.comment def item_link(self, item): return reverse('comment', kwargs = {'object_pk':item.pk})
在我们的 feed 类中,title、link 和 description 属性对应于标准 RSS 的<title>、<link> 和 <description> 元素。
items 方法返回应该作为 item 元素添加到 feed 中的元素。在本例中是最近五条评论。
item_title 方法将获取作为 feed 项目标题的内容。在本例中,标题将是用户名。
item_description 方法将获取作为 feed 项目描述的内容。在本例中是评论本身。
item_link 方法将构建指向完整项目的链接。在本例中,它将引导你到评论。
现在我们有了 feed,让我们在 views.py 中添加一个评论视图来显示我们的评论:
from django.contrib.comments import Comment def comment(request, object_pk): mycomment = Comment.objects.get(object_pk = object_pk) text = '<strong>User :</strong> %s <p>'%mycomment.user_name</p> text += '<strong>Comment :</strong> %s <p>'%mycomment.comment</p> return HttpResponse(text)
我们还需要在 myapp 的 urls.py 中添加一些 URL 进行映射:
from myapp.feeds import DreamrealCommentsFeed from django.conf.urls import patterns, url urlpatterns += patterns('', url(r'^latest/comments/', DreamrealCommentsFeed()), url(r'^comment/(?P\w+)/', 'comment', name = 'comment'), )
访问 /myapp/latest/comments/ 将获得我们的 feed:
然后点击用户名之一将跳转到:/myapp/comment/comment_id(如我们之前的评论视图中定义的那样),你将获得:
因此,定义 RSS feed 只需要继承 Feed 类并确保定义了 URL(一个用于访问 feed,一个用于访问 feed 元素)。与评论一样,这可以附加到应用中的任何模型。
广告