Django - RSS
Django vem com uma estrutura de geração de feed de sindicação. Com ele você pode criar feeds RSS ou Atom apenas criando subclassesdjango.contrib.syndication.views.Feed class.
Vamos criar um feed para os comentários mais recentes feitos no aplicativo (consulte também o capítulo Django - Estrutura de comentários). Para isso, vamos criar um myapp / feeds.py e definir nosso feed (você pode colocar suas classes de feeds em qualquer lugar que quiser em sua estrutura de código).
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})
Em nossa classe de feed, title, linke description atributos correspondem ao RSS padrão <title>, <link> e <description> elementos
o itemsmétodo, retorna os elementos que devem ir no feed como elemento de item. No nosso caso, os últimos cinco comentários.
o item_title, obterá o que será usado como título para nosso item de feed. No nosso caso, o título, será o nome do usuário.
o item_description, obterá o que servirá como descrição para nosso item de feed. No nosso caso, o próprio comentário.
o item_linkmétodo irá construir o link para o item completo. No nosso caso, você chegará ao comentário.
Agora que temos nosso feed, vamos adicionar uma visualização de comentário em views.py para exibir nosso comentário -
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)
Também precisamos de alguns URLs em nosso myapp urls.py para mapeamento -
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'),
)
Ao acessar / myapp / latest / comments / você receberá nosso feed -
Em seguida, clicar em um dos nomes de usuário levará você a: / myapp / comment / comment_id conforme definido em nossa visualização de comentários antes e você obterá -
Assim, definir um feed RSS é apenas uma questão de subclassificar a classe Feed e garantir que os URLs (um para acessar o feed e outro para acessar os elementos do feed) sejam definidos. Apenas como comentário, ele pode ser anexado a qualquer modelo em seu aplicativo.