eth0.pro

Linux is working. The future is open.



В этой статье Вы не получите глубокое рассмотрение всего модуля к Django, со всеми фичами. Для этого можно обратиться к примеру сюда: http://djbook.ru/ch11s05.html, а здесь как бы Quick Start, чтобы быстро, просто и работоспособно.

И так! Для начала правим urls.py, чтобы назначить адрес, по кторому открывается RSS-трансляция.

urls.py:

from blog.views import LatestPosts
...
url(r'^rss/$', LatestPosts()),

Далее идем во вьюшку. Пишем там класс:

from django.contrib.syndication.views import Feed

class LatestPosts(Feed): 
	title= "eth0.pro"
	link= "/"
	description= "Последние статьи на сайте eth0.pro"
	
	def items(self): 
		# Не забываем указать свою модель:
		return models.Post.objects.filter(pub=True).order_by('-date')[:5]
	
	def item_title(self, item):
		""" Функция возвращает заголовок статьи """
		return item.title
	
	def item_description(self, item):
		""" А эта функция возвращает текст статьи (весь не обязательно!)
		return item.text

Вместо функций, возвращающих title и description, можно использовать шаблоны, тогда класс будет выглядеть следующим образом:

class LatestPosts(Feed): 
	title= "eth0.pro"
	link= "/"
	description= "Последние статьи на сайте eth0.pro"
	
	title_template = "rss_title.html"
	description_template = "rss_description.html"
	
	def items(self): 
		return models.Post.objects.filter(pub=True).order_by('-date')[:20]

Не забываем создать сами шаблоны. В них будет передаваться контекст {{ obj }}, содержащий одну из items (запись вашей модели).

rss_title.html

{{ obj.title }}

rss_description.html

{{ obj.text|safe|truncatewords:100 }}

Открываем http://eth0.pro/rss/ и наслаждаемся. Voila!

5 фев 2013 г. | Теги: Django