¿Cómo agregar RSS Feed y Sitemap al proyecto Django?

Este artículo es una continuación de Blog CMS Project en Django. Echa un vistazo a esto aquí: Creación de blog CMS (Sistema de gestión de contenido) con Django

Fuente RSS (Really Simple Syndication)

RSS (Really Simple Syndication) es una fuente web que permite a los usuarios y aplicaciones acceder a actualizaciones de sitios web en un formato estandarizado y legible por computadora. Estos feeds pueden, por ejemplo, permitir a un usuario realizar un seguimiento de muchos sitios web diferentes en un único agregador de noticias. Django viene con una biblioteca para crear fuentes atómicas para nuestro blog. 

Creación de vistas para RSS Feed – 

Vaya al directorio de la aplicación del blog y cree un archivo feeds.py y pegue el siguiente código.

Python3

from django.contrib.syndication.views import Feed
from django.template.defaultfilters import truncatewords
from .models import posts
from django.urls import reverse
from django.utils.feedgenerator import Atom1Feed
 
class blogFeed(Feed):
    title = "geeksforgeeks"
    link = "/posts/"
    description = "RSS feed of GeeksForGeeks"
 
    def items(self):
        return posts.objects.filter(status = 1)
 
    def item_title(self, item):
        return item.title
       
    def item_description(self, item):
        return item.metades
 
    def item_link(self, item):
       return reverse('post_detail', args =[item.slug])
 
class atomFeed(Feed):
    feed_type = Atom1Feed

Crear rutas para RSS Feed – 

Para enrutar la fuente RSS, vaya al archivo urls.py de la aplicación que está utilizando para generar la fuente y agregue la ruta

Python3

# importing django routing libraries
from . import views
from django.urls import path, include
from .views import * from .feeds import blogFeed
 
urlpatterns = [
.....
    # RSS route 
    path("posts / feed", blogFeed(), name ="feed"),
.....
]

Alimentación de muestra

Alimentación de muestra

mapa del sitio – 

El protocolo Sitemap permite a un webmaster informar a los motores de búsqueda sobre las URL de un sitio web que están disponibles para rastrear. Un Sitemap es un archivo XML que enumera las URL de un sitio. Permite a los webmasters incluir información adicional sobre cada URL: cuándo se actualizó por última vez, con qué frecuencia cambia. Esto permite que los motores de búsqueda rastreen el sitio de manera más eficiente y encuentren direcciones URL que puedan estar aisladas del resto del contenido del sitio.

Agregue mapas de sitio a INSTALLED_APPS –

Django también viene con un creador de mapas de sitio, vaya al directorio de aplicaciones del blog y agregue mapas de sitio a las aplicaciones instaladas en el archivo de configuración

Python3

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
    # adding in installed apps
    'django.contrib.sitemaps',
 
]

Crear mapa del sitio – 

Cree un archivo sitemaps.py y pegue el siguiente código.

Python3

from django.contrib.sitemaps import Sitemap
from .models import posts
 
# siemap class
class blogSitemap(Sitemap):
# change frequency and priority
    changefreq = "daily"
    priority = 1.0
 
    def items(self):
        return posts.objects.filter(status = 1)
 
    def lastmod(self, obj):
        return obj.updated_on

Agregar URL absoluta al modelo – 

El mapa del sitio generado debe tener direcciones URL para nuestras publicaciones, por lo que debemos agregar una función simple a nuestro modelo para que la biblioteca del mapa del sitio pueda generar las direcciones URL de las publicaciones.

Python3

# add it in your model for which you want to generate sitemap
def get_absolute_url(self):
        from django.urls import reverse
        return reverse("post_detail", kwargs ={"slug": str(self.slug)})

Enrutamiento para el mapa del sitio –

Ahora, para generar la URL del mapa del sitio, vaya al archivo urls.py y agregue la ruta

Python3

# adding sitemap libraries
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import blogSitemap
 
blogsitemap = {
"blog": blogSitemap, }
 
urlpatterns = [
.....
    # urls handling site maps
    path("sitemap.xml", sitemap, {"sitemaps": blogsitemap}, name ="sitemap"),
.....
]

Ahora puede ver fuentes RSS y Sitemaps en las direcciones URL asignadas

Ejemplo de mapa del sitio

Ejemplo de mapa del sitio

Publicación traducida automáticamente

Artículo escrito por kushwanthreddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *