Exemple de comment créer un sitemap pour un site web basé sur Django (version utilisée 1.11.10):
On va ici supposer un site avec une application intitulée "notebooks" avec l'organisation suivante:
database.db
manage.py
myproject / settings.py
urls.py
notebooks / views.py
models.py
urls.py
avec models.py
class Article(models.Model):
full_path = models.TextField()
date_created = models.DateTimeField(default=datetime.now)
date_modified = models.DateTimeField(default=datetime.now)
public = models.BooleanField(default=True)
content = models.TextField()
content_formatted = models.TextField()
ou full_path est l'adresse url pour un article donné (par exemple: /Articles/Mon-premier-article/)
et le fichier notebooks / urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^About/$', views.about_view, name='about_view'),
url(r'^Contact/$', views.contact_view, name='contact_view'),
url(r'^Articles/$', views.home_view, name='home_view'),
]
Modifier le fichier settings.py
Première étape modifier le fichier settings.py et ajouter la ligne suivante "django.contrib.sitemaps" dans INSTALLED_APPS:
INSTALLED_APPS = [
'notebooks.apps.NotebooksConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
]
Créer un fichier sitemaps.py
Créer un fichier vide sitemaps.py:
notebooks / views.py
models.py
urls.py
sitemaps.py
Ajouter les pages statiques du site
Tout d'abord on peut ajouter les pages statiques du site (/About/, /Contact/) en éditant le fichier sitemaps.py comme ceci
from django.contrib.sitemaps import Sitemap
from django.core.urlresolvers import reverse
class Static_Sitemap(Sitemap):
priority = 1.0
changefreq = 'yearly'
def items(self):
return ['about_view', 'contact_view']
def location(self, item):
return reverse(item)
Ajouter les pages dynamiques du site
On peut ensuite ajouter les pages du site associées aux articles:
from django.contrib.sitemaps import Sitemap
from django.core.urlresolvers import reverse
from .models import Article
class Static_Sitemap(Sitemap):
priority = 1.0
changefreq = 'daily'
def items(self):
return ['about_view', 'contact_view']
def location(self, item):
return reverse(item)
class Article_Sitemap(Sitemap):
changefreq = "daily"
priority = 0.7
def items(self):
return Article.objects.all()
def location(self, obj):
return obj.note_full_path
def lastmod(self, obj):
return obj.date_modified
Modifier le fichier urls.py
Dernière étape modifier le fichier myproject / urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from notebooks.sitemaps import Static_Sitemap
from notebooks.sitemaps import Article_Sitemap
sitemaps = {
'article': Article_Sitemap(),
'static': Static_Sitemap(),
}
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('notebooks.urls')),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]
Vérifier le fichier sitemaps.xml
Tester le fichier sitemaps crée par django en allant dans l'url http://127.0.0.1:8000/sitemap.xml:
Références
Liens | Site |
---|---|
Sitemaps XML format | sitemaps.org |
Creating Sitemaps in Django | overiq.com |
The sitemap framework | docs.djangoproject.com |
Creating a sitemap index in Django | django.cowhite.com |
Django - Sitemap Tutorial | samulinatri.com |
Django Sitemap Tutorial - Help Crawlers Understand Your Website! (2018) | youtube |