Django - RSS

Django datang dengan kerangka kerja penghasil umpan sindikasi. Dengan itu Anda dapat membuat RSS atau Atom feed hanya dengan subclassingdjango.contrib.syndication.views.Feed class.

Mari membuat umpan untuk komentar terbaru yang dilakukan pada aplikasi (Juga lihat bab Django - Kerangka Komentar). Untuk ini, mari buat myapp / feeds.py dan tentukan feed kami (Anda dapat meletakkan kelas feed Anda di mana pun Anda inginkan dalam struktur kode Anda).

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})
  • Di kelas umpan kami, title, link, dan description atribut sesuai dengan RSS standar <title>, <link> dan <description> elemen.

  • Itu itemsmetode, kembalikan elemen yang harus dimasukkan dalam umpan sebagai elemen item. Dalam kasus kami, lima komentar terakhir.

  • Itu item_titlemetode, akan mendapatkan apa yang akan menjadi judul untuk item umpan kita. Dalam kasus kami, judul, adalah nama pengguna.

  • Itu item_descriptionmetode, akan mendapatkan apa yang akan menjadi deskripsi untuk item umpan kami. Dalam kasus kami, komentar itu sendiri.

  • Itu item_linkmetode akan membangun tautan ke item lengkap. Dalam kasus kami, Anda akan mendapatkan komentar.

Sekarang kita memiliki umpan kita, mari tambahkan tampilan komentar di views.py untuk menampilkan komentar kita -

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)

Kami juga membutuhkan beberapa URL di myapp urls.py kami untuk pemetaan -

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'),
)

Saat mengakses / myapp / latest / comments / Anda akan mendapatkan umpan kami -

Kemudian mengklik salah satu nama pengguna akan membawa Anda ke: / myapp / comment / comment_id seperti yang didefinisikan dalam tampilan komentar kami sebelumnya dan Anda akan mendapatkan -

Oleh karena itu, menentukan umpan RSS hanyalah masalah sub-klasifikasi kelas Umpan dan memastikan URL (satu untuk mengakses umpan dan satu untuk mengakses elemen umpan) ditentukan. Sama seperti komentar, ini dapat dilampirkan ke model apa pun di aplikasi Anda.