Ricerca nel sito web

Come aggiungere feed RSS e mappa del sito al progetto Django?


Introduzione

L'incorporazione di componenti web come Sitemap e feed RSS (Really Simple Syndication) può offrire numerosi vantaggi, ad esempio migliorare l'accessibilità degli utenti, aumentare il consumo di contenuti del sito web e migliorare le prestazioni dei motori di ricerca. Gli sviluppatori possono sfruttare Django per semplificare il processo di costruzione di applicazioni web, dando vita a siti web eccezionalmente efficaci e facili da usare.

Cos'è RSS e Sitemap?

I feed RSS sono file XML che includono riepiloghi del materiale presente su un sito Web, come titoli e descrizioni di articoli. Gli utenti possono semplicemente ottenere il materiale senza visitare il sito Web leggendo questi file utilizzando i lettori RSS. D'altra parte, le mappe dei siti sono file XML che includono un elenco di ogni pagina di un sito web. Aiutano ad aumentare l'esposizione del sito Web nelle pagine dei risultati dei motori di ricerca consentendo ai motori di ricerca di eseguire la scansione e indicizzare il sito (SERP). La visibilità e l'esperienza utente di un sito Web possono essere notevolmente migliorate aggiungendo feed RSS e mappe dei siti a un progetto Django.

Passaggi per aggiungere un RSS e una mappa del sito a un progetto Django

Per aggiungere feed RSS e mappe del sito a un progetto Django, dobbiamo seguire questi passaggi −

  • Installa il pacchetto Django −

pip install django
  • Avvia un progetto Django

django-admin startproject example
  • Esegui il server di sviluppo dal tuo computer locale

python manage.py runserver
  • Avvia una nuova app per mostrare RSS e Sitemap

python manage.py startapp dj-app
  • python Manage.py makemigrations python Manage.py migra

A questo punto, ci saranno tre file già creati nella directory del progetto app “dj-app ”. Modificheremo il file settings.py, views.py e il file urls.py per ottenere il risultato desiderato.

  • Aggiungi 'django.contrib.syndication' e 'django.contrib.sitemaps' all'elenco INSTALLED_APPS nel file settings.py -

INSTALLED_APPS = [
   ...
   'django.contrib.syndication',
   'django.contrib.sitemaps',
]
  • Nel file views.py crea una classe per il feed RSS che eredita dalla classe del feed di syndication Django −

from django.contrib.syndication.views import Feed

class MyFeed(Feed):
   title = "TutorialsPoint"
   link = "/blog/"
   description = "A TutorialsPoint Example of RSS and Sitemap"

   def items(self):
      return BlogPost.objects.order_by('-published')[:5]

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

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

   def item_link(self, item):
      return reverse('blog_post', args=[item.slug])
  • Crea un modello URL per il feed RSS −

from django.urls import path
from .feeds import MyFeed

urlpatterns = [
   ...
   path('feed/', MyFeed(), name='feed'),
]
  • Crea una classe per la Sitemap che eredita dalla classe Sitemap Django −

from django.contrib.sitemaps import Sitemap
from django.urls import reverse

class MySitemap(Sitemap):
   changefreq = "weekly"
   priority = 0.5

   def items(self):
      return [HomeView, AboutView, ContactView, BlogPostView]

   def location(self, item):
      return reverse(item)
  • Crea un pattern URL per la Sitemap in urls.py

from django.contrib.sitemaps.views import sitemap
from .sitemaps import MySitemap

sitemaps = {
   'pages': MySitemap(),
}

urlpatterns = [
   ...
   path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]

Entriamo nello specifico dei passaggi illustrati sopra −

Il codice importa i pacchetti e i moduli necessari da Django, inclusi Feed, Sitemap e viceversa.

  • Definisci una classe chiamata MyFeed, che estende la classe Feed e imposta il titolo, il collegamento e la descrizione del feed RSS.

  • Il metodo items è definito nella classe MyFeed, che restituisce gli ultimi 5 post del blog ordinati in base alla data di pubblicazione.

  • I metodi item_title, item_description e item_link sono definiti anche nella classe MyFeed per recuperare il titolo, il corpo e lo slug di ogni post del blog.

  • Viene inoltre definita la classe MySitemap, che estende la classe Sitemap e imposta la changefreq e la priorità della mappa del sito.

  • Il metodo items nella classe MySitemap restituisce un elenco di URL per la home page, la pagina Informazioni, la pagina dei contatti e la pagina dei post del blog.

  • Il metodo di ubicazione nella classe MySitemap è definito per restituire l'URL per ogni elemento nell'elenco chiamando la funzione inversa con l'elemento come argomento.

Conclusione

Questo post dimostra una tecnica per incorporare un feed RSS e una mappa del sito nelle applicazioni Web create con Django. La tecnica prevede la definizione delle classi MyFeed e MySitemap, che sono rispettivamente estensioni delle classi Feed e Sitemap. Queste classi forniscono informazioni rilevanti e collegamenti ai post di blog e alle pagine Web più recenti, consentendo la creazione di una mappa del sito e di un feed RSS per un sito Web. La classe MyFeed fornisce il titolo, il testo e lo slug dei cinque articoli del blog più recenti, organizzati in base alla data di pubblicazione. La classe MySitemap utilizza il metodo inverso per acquisire gli URL per la pagina principale del sito Web, la pagina Informazioni e altre pagine pertinenti per ottenere gli URL per ciascun elemento. Questo esempio illustra come è possibile utilizzare Django per creare funzionalità efficienti per applicazioni online come mappe dei siti e feed RSS.

Articoli correlati: