بخش های اصلی

آموزش Django

Django – RSS

Django، یک فریم ورکِ syndication feed generating داره. می توانید با این فریم ورک، فیدهایِ RSS یا Atom را فقط با استفاده از زیرکلاسِ django.contrib.syndication.views.Feed class ایجاد کنین.

در ادامه برای آخرین commnetهای گذاشته شده در برنامه، یک فید ایجاد می کنیم (برای اطلاعات بیش تر به بخش "Django – فریم ورکِ Commnets"  مراجعه کنین). برای انجام این کار  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، چیزی را میده که بعنوان توضیحات آیتمِ فید خواهد بود. در مثال ما، این مورد، خودِ comment خواهد بود.
  •  متدِ item_link، لینک را برای کل آیتم ایجاد می کنه. در مثال ما، این متد شما را به commnet میبره.

حالا که فید را ایجاد کردیم، برای نمایشِ commnet، یک view با نامِ commnet در فایلِ 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)

برای map کردن، به تعدادی URL در فایلِ urls.py، نیاز داریم :

from myapp.feeds import DreamrealCommentsFeed
from django.conf.urls import patterns, url

urlpatterns += patterns('',
   url(r'^latest/comments/', DreamrealCommentsFeed()),
   url(r'^comment/(?Pw+)/', 'comment', name = 'comment'),
)

اگه به accessing /myapp/latest/comments/ برین، فید را بصورت زیر خواهید دید –

django rss example

اگه روی یکی از نام های کاربری کلیک کنین، همان طور که قبلا در viewیِ comment تعریف کردیم، به /myapp/comment/comment_id هدایت خواهید شده و صفحه ی زیر را مشاهده خواهید کرد –

django rss redirected page

بنابراین، تعریفِ یک فیدِ RSS فقط مربوط به زیرکلاسِ کلاسِ Feed است. اطمینان حاصل کنین که URLها (یکی برای دسترسی به فید و یکی برای دسترسی به عناصرِ فید) تعریف شده باشن. مثل comment، فیدها نیز قابلِت attach شدن به هر مدلی در برنامه را دارن.

مبحث آموزشی

آموزش Django

Learn Django

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

تبلیغات

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

آخرین مقالات

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد