Membuat Feed RSS dan Atom pada Django 2
Membuat RSS dan Atom feed pada Django cukup mudah. Kita tinggal menentukan model apa yang akan dijadikan syndication feed dan menambahkan URL.
Perhatikan, kita sebaiknya teliti memilih field/method model kita yang digunakan pada kelas Feed. Isi berita (pada contoh saya) mungkin terlalu panjang, bisa diganti ringkasan berita atau semacamnya.
Buat file baru pada direktori app bernama feeds.py
.
from django.contrib.syndication.views import Feed
from django.utils.feedgenerator import Atom1Feed
from nama_app.models import Berita
from markdownx.utils import markdownify
import datetime
class RssLatestArticlesFeed(Feed):
title = "Judul Feed"
link = '/'
description = "Berita terbaru untuk pembaca."
author_name = 'Pemilik Blog'
author_email = 'email@email.com'
feed_copyright = f'Copyright (c) {datetime.datetime.now().year}'
def items(self):
return Berita.objects.filter(published=True)[:10000]
def item_title(self, item):
return item.title
def item_description(self, item):
return markdownify(item.content)
def item_updateddate(self, item):
return item.date_created
class AtomLatestArticlesFeed(RssLatestArticlesFeed):
feed_type = Atom1Feed
subtitle = RssLatestArticlesFeed.description
Pada contoh di atas, feed Atom adalah child dari RSS. Sederhana bukan? Semua field dan method pada kelas Feed
di atas juga sebaiknya disertakan pada implementasi masing-masing. (Saya menggunakan markdownify()
karena saya menyimpan konten dengan format markdown.)
Jangan lupa, dalam contoh ini, title
, content
, dan date_created
adalah field yang valid pada model yang digunakan (Berita
).
Di urls.py
di direktori proyek, tambahkan ini:
from nama_app.feeds import AtomLatestArticlesFeed, RssLatestArticlesFeed
urlpatterns = [
# .. dan lain-lain ..
path('feed/atom/', AtomLatestArticlesFeed(), name='articles-atom'),
path('feed/rss/', RssLatestArticlesFeed(), name='articles-rss'),
# ...
]
Contoh pada Atom feed blog saya.