Create blog RSS feed functionality

Fix feed link in main template
This commit is contained in:
2014-06-15 10:06:55 +02:00
parent 34d1cefe70
commit f4bfd822f7
3 changed files with 57 additions and 2 deletions

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
{% load static from staticfiles %}
{% load get_post_link from blog_link %}
<rss version="2.0">
<channel>
<title>Gergely Polonkai</title>
<description>Gergely Polonkais Blog</description>
<link>{{ site_url }}</link>
{% comment %}
The <pubDate> element defines the last publication date for the content in the RSS feed.
The <lastBuildDate> element defines the last-modified date of the content of the feed.
TODO: Incorporate a modified_at field in the blog. These fields must depend on them.
{% endcomment %}
<lastBuildDate>{{ last_build_date }}</lastBuildDate>
<pubDate>{{ last_build_date }}</pubDate>
<ttl>7200</ttl>
<language>en</language>
<image>
<title>Gergely Polonkai</title>
<url>{{ profile_pic }}</url>
<link>{{ site_url }}</link>
</image>
{% for post in posts %}
<item>
<title><![CDATA[ {{ post.title }} ]]></title>
<link>{% get_post_link post %}</link>
<comments>{% get_post_link post %}#comments</comments>
<pubDate>{{ post.created_at_rss }}</pubDate>
<description><![CDATA[ {{ post.content|safe }} ]]></description>
<guid>{% get_post_link post %}</guid>
</item>
{% endfor %}
</channel>
</rss>

View File

@@ -1,6 +1,10 @@
from django.shortcuts import render, get_object_or_404
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from blog.models import Post, CodeChunk
from django.core.urlresolvers import reverse
import datetime
import pytz
from django.templatetags.static import static
def mainpage(request):
last_posts = Post.objects.filter(draft = False).order_by('-created_at')[:5]
@@ -96,5 +100,21 @@ def codechunk(request, language, slug):
return render(request, 'blog/code-chunk.html', {'codechunk': chunk})
def feed(request):
return render(request, 'blog/feed.xml', {})
latest_post = Post.objects.filter(draft = False).order_by('-created_at')[0:1]
if not latest_post:
latest_date = datetime.datetime(1983, 3, 7, 11, 54, 45, 0, pytz.timezone('Europe/Budapest'))
else:
latest_date = latest_post[0].created_at
posts = Post.objects.order_by('-created_at')[:10]
return render(request, 'blog/feed.xml', {
'site_url': request.build_absolute_uri(reverse('home')),
'profile_pic': request.build_absolute_uri(static('images/profile.png')),
'last_build_date': latest_date.strftime('%a, %d %b %Y %T %z'),
'posts': posts,
},
content_type = 'application/xml'
)