django- RSS

RSS (feed)

Really Simple Syndication 또는 Rich Site Summary 또는 RDF Site Summary의 약자로 웹사이트를 일일이 방문하지 않아도 업데이트 되는 컨텐츠를 확인 할 수 있게 만드는 (자동수집이 가능하도록 하는) 기능입니다.

RSS를 제공하기 위해서는 RSS주소가 필요하다

urls.py
	url(r'^blog/feed/$', views.rssfeed),

blog/feed 로 접속하면 rssfeed 라는 함수가 처리를 하도록 views.py 에 rssfeed 함수를 정의한다.

views.py

	def rssfeed(request):
	from django.utils import feedgenerator
	fd = feedgenerator.Rss201rev2Feed(
		title = u'my blog rss', #rss 제목
		link = u'/blog/feed/', #rss주소
		description = u'this is a rss of my blog' #설명
		)
	for post in Post.objects.all().order_by('published_date')[:5]:
		fd.add_item(
			title = post.title,
			link = u'/blog/post/%d/' % post.id,
			description = post.content,
			published_date = post.published_date)
	return HttpResponse(fd.writeString('utf-8'), content_type='application/rss+xml')

xml 자료형을 쉽게 만들 수 있는 django.utils.feeedgenerator를 이용한다. RSS자료제공(feeding)에 필요한 자료를 만들어 준다고 한다.

/blog/feed 에 들어가면

image

django는 RSS및 Atom 피드를 쉽게 만들 수 있는 고급 신디케이션 피드 생성 프레임 워크를 제공함으로써 feeding을 훨씬 고차원 적으로 해결하게 만든다. https://docs.djangoproject.com/en/2.0/ref/contrib/syndication/

feeds.py

blog 폴더 밑에 feeds.py파일을 생성 한다

from django.contrib.syndication.views import Feed
from django.urls import reverse
from django.utils.feedgenerator import Atom1Feed
from .models import Post

class RssFeed(Feed):
	title = 'my blog rss'
	link = '/blog/feed/'
	description ='this is a rss of my blog'
	title_template='feeds/rss_title.html'
	description_template = 'feeds/rss_description.html'

	def items(self):
		return Post.objects.order_by('published_date')[:5]

	def item_title(self, item):
		return item.title

	def item_content(self, item):
		return item.content

	# item_link is only needed if NewsItem has no get_absolute_url method.
	def item_link(self, item):
		return reverse('post_detail', args=[item.pk])

class AtomFeed(RssFeed):
	feed_type = Atom1Feed
	title_template = 'feeds/rss_title.html'
	description_template = 'feeds/rss_description.html'
테스트

https://chrome.google.com/webstore/detail/rss-feed-reader/pnjaodmkngahhkoihejjehlcdlnohgmp/related 에 들어가서 rss feed reader확장 프로그램을 다운받고 url을 추가해 보았다.

image image image image