Django - RSS

Django มาพร้อมกับเฟรมเวิร์กการสร้างฟีดการเผยแพร่ ด้วยวิธีนี้คุณสามารถสร้างฟีด RSS หรือ Atom เพียงแค่ซับคลาสdjango.contrib.syndication.views.Feed class.

มาสร้างฟีดสำหรับความคิดเห็นล่าสุดที่ทำบนแอพ (โปรดดู 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})
  • ในคลาสฟีดของเรา title, linkและ description แอตทริบิวต์สอดคล้องกับ RSS มาตรฐาน <title>, <link> และ <description> องค์ประกอบ

  • itemsวิธีส่งคืนองค์ประกอบที่ควรไปในฟีดเป็นองค์ประกอบรายการ ในกรณีของเราห้าความคิดเห็นล่าสุด

  • 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)

เราต้องการ URL บางส่วนใน myapp urls.py สำหรับการแมป -

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 / ล่าสุด / ความคิดเห็น / คุณจะได้รับฟีดของเรา -

จากนั้นคลิกที่ชื่อผู้ใช้รายการใดชื่อหนึ่งคุณจะไปที่: / myapp / comment / comment_id ตามที่กำหนดไว้ในมุมมองความคิดเห็นของเราก่อนหน้านี้และคุณจะได้รับ -

ดังนั้นการกำหนดฟีด RSS จึงเป็นเพียงเรื่องของการแบ่งคลาสฟีดย่อยและตรวจสอบให้แน่ใจว่ามีการกำหนด URL (URL สำหรับเข้าถึงฟีดและอีก URL หนึ่งสำหรับเข้าถึงองค์ประกอบฟีด) เช่นเดียวกับความคิดเห็นสิ่งนี้สามารถแนบกับรุ่นใดก็ได้ในแอปของคุณ