- Django 教程
- 姜戈 - 主页
- Django - 基础知识
- Django - 概述
- Django - 环境
- Django - 创建项目
- Django - 应用程序生命周期
- Django - 管理界面
- Django - 创建视图
- Django - URL 映射
- Django - 模板系统
- Django - 模型
- Django - 页面重定向
- Django - 发送电子邮件
- Django - 通用视图
- Django - 表单处理
- Django - 文件上传
- Django - Apache 设置
- Django - Cookie 处理
- Django - 会话
- Django - 缓存
- Django - 评论
- 姜戈 - RSS
- Django - AJAX
- Django 有用资源
- Django - 快速指南
- Django - 有用的资源
- Django - 讨论
姜戈 - RSS
Django 附带了一个联合提要生成框架。使用它,您只需通过子类化django.contrib.synmination.views.Feed 类即可创建 RSS 或 Atom 提要。
让我们为应用程序上完成的最新评论创建一个提要(另请参阅 Django - 评论框架章节)。为此,让我们创建一个 myapp/feeds.py 并定义我们的提要(您可以将提要类放在代码结构中的任何位置)。
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方法将获取我们的提要项目的标题。在我们的例子中,标题将是用户名。
item_description方法将获取我们的提要项目的描述。在我们的例子中是评论本身。
item_link方法将构建到完整项目的链接。在我们的例子中,它会让您发表评论。
现在我们有了提要,让我们在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/ 时,您将获得我们的提要 -
然后单击其中一个用户名将使您进入: /myapp/comment/comment_id (如我们之前的评论视图中所定义),您将得到 -
因此,定义 RSS 提要只需对 Feed 类进行子类化并确保定义 URL(一个用于访问提要,一个用于访问提要元素)即可。正如评论一样,它可以附加到应用程序中的任何模型。