Создание сайта на Django: Урок 44, создание rss ленты в Django для SEO
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Руководства «Django»
Комментариев: 0

RSS-каналы, в случае новостных онлайн-ресурсов, представляют собой небольшие xml-файлы, обычно содержащие заголовок и заголовок новости.

Добавление RSS в Django

Создадим файл feeds.py в нашем модуле blog.

modules/blog/feeds.py

from django.contrib.syndication.views import Feed
from django.urls import reverse
from django.utils.translation import gettext_lazy as _

from modules.blog.models import Article


class LatestArticlesFeed(Feed):
    title = 'Записки интернет-охотника'
    link = '/articles/'
    description = 'Здесь вы найдете полезные записи интернета'
    language = 'ru'

    def items(self):
        return Article.objects.order_by('-created_at')[:5]

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

    def item_description(self, item):
        return item.short_description

    def item_link(self, item):
        return reverse('article-detail', args=[item.slug])

Пояснения:

  • title - заголовок ленты.
  • link - ссылка ленты.
  • description - описание ленты.
  • language - язык ленты.
  • items - возвращаем список статей сортируя их по времени в количестве 5 штук.
  • item_title - возвращаем заголовок статьи.
  • item_description - возвращаем краткое описание статьи.
  • item_link - возвращаем ссылку на статью.

Добавим ленту в urls.py

backend/urls.py

from django.contrib import admin
from django.urls import path, include
from django.contrib.sitemaps.views import sitemap

from django.conf.urls.static import static
from backend import settings
from modules.blog.feeds import LatestArticlesFeed
from modules.blog.sitemaps import ArticleSitemap

sitemaps = {
    'articles': ArticleSitemap,
}

urlpatterns = [
    path('ckeditor5/', include('django_ckeditor_5.urls')),
    path('admin/', admin.site.urls),
    path('s/', include('modules.system.urls')),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
    path('feed/', LatestArticlesFeed()),
    path('', include('modules.blog.urls')),
]

if settings.DEBUG:
    urlpatterns = [path('__debug__/', include('debug_toolbar.urls'))] + urlpatterns
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Пояснения:

  • Добавил path('feed/', LatestArticlesFeed()) импортировав from modules.blog.feeds import LatestArticlesFeed

Проверим результат на сайте:

Отлично. У нас все получилось. Вид конечно не очень, потому что нам эту ленту необходимо добавить в rss каналы браузера, тогда вид преобразуется для удобочитаемости.

Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)