English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

RSS Django

O Django possui uma estrutura de feed de agregação. Com ele, você pode criar RSS ou Atom apenas herdando a classe django.contrib.syndication.views.Feed.

Vamos criar uma aplicação de fonte de inscrição.

# Nome do Arquivo : example.py
# Copyright : 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data : 2020-08-08
from django.contrib.syndication.views import Feed
 from django.contrib.comments import Comment
 from django.core.urlresolvers import reverse
 class DreamrealCommentsFeed(Feed):
    title = "Comentários do Dreamreal"
    link = "/drcomments/"
    description = "Atualizações sobre novos comentários na entrada Dreamreal."
    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})

No feed, os atributos title, link e description correspondem aos elementos <title>, <link> e <description> do RSS padrão.

O método entry retorna os elementos que devem entrar no feed. Em nosso exemplo, são os últimos cinco comentários.

Agora, temos o feed e adicionamos comentários na view views.py para exibir nossos comentários-

# Nome do Arquivo : example.py
# Copyright : 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data : 2020-08-08
from django.contrib.comments import Comment
 def comment(request, object_pk):
    mycomment = Comment.objects.get(object_pk = object_pk)
    text = '<strong>Usuário:</strong> '</<strong>%s</strong> <p>'%mycomment.user_name</p>
    text +<strong>Comentário:</strong> '</strong>%s<p>'%mycomment.comment</p>
    return HttpResponse(text)

Precisamos de algumas URLs mapeadas no myapp/urls.py -

# Nome do Arquivo : example.py
# Copyright : 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data : 2020-08-08
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á feed -

Ao clicar em um dos nomes de usuário, você receberá:/myapp/comment/comment_id antes da definição da sua visão de comentários, receberá -

Portanto, defina uma fonte RSS como subclasse da classe Feed e certifique-se de que essas URLs (uma para acessar o feed e uma para acessar os elementos do feed) estejam definidas. Como comentado, isso pode ser conectado a qualquer modelo do seu aplicativo.