Un mapa del sitio es un documento XML que contiene todas las URL importantes de nuestro sitio web. Los buscadores lo utilizan como herramientas de navegación para indexar sus sitios web, rastrean e indexan de manera mas rápida y eficiente usando este sistema.
Es por esto por lo que es conveniente tener un "sitemap" para nuestro sitio, ya que así se automatiza el envío de nuestras páginas web a los servidores de los buscadores. Esto es una de las técnicas que se utilizan para mejorar nuestro posicionamiento en los motores de búsqueda.
Por suerte, Django viene con un framework para crear "sitemap". Para utilizarlo tenemos que registrar dentro de las aplicaciones instaladas, tanto "sites" como "sitemap" de la siguiente forma. Edita el archivo "settings.py" de la aplicación PracticaDjango y añade el código sombreado:
PracticaDjango/PracticaDjango/settings.py
# Aplicaciones de terceros
'django_bootstrap5',
# Mapa del Sitio
'django.contrib.sites', # add sites to installed_apps
'django.contrib.sitemaps', # add Django sitemaps to installed app
# Aplicaciones por defecto
'django.contrib.admin',
# ...
Ejecuta las migraciones para añadir el "sitemaps" a la base de datos:
python manage.py makemigrations
python manage.py migrate
Lo siguiente es añadir el nombre de nuestro dominio a los Sitios.
- En el terminal ejecutamos: python manage.py runserver
- Ve al administrador de Django y entra usando tus credenciales.
- Ve a la sección Sitios y haz clic en añadir sitio.
PracticaDjango/PracticaDjango/sitemaps.py
from django.contrib.sitemaps import Sitemap
from django.urls import reverse
from Blog.models import Post
class BlogSitemap(Sitemap):
changefreq = "monthly"
priority = 0.8
protocol = 'http'
def items(self):
return Post.objects.all()
def lastmod(self, obj):
return obj.updated
# def location(self, obj):
# return '/blog/%s' % (obj.slug)
class StaticSitemap(Sitemap):
changefreq = "yearly"
priority = 0.8
protocol = 'http'
def items(self):
return ["Proyecto_web_app:home",
"Servicios:servicios",
"Contacto:contacto",
] #devuelve las páginas estáticas;
def location(self, item):
return reverse(item) #devuelve las URL de las páginas estáticas;
De donde sale Servicios:servicios para incluirlo en el item() de las páginas estáticas.
from django.urls import path
from . import views
app_name = 'Servicios'
urlpatterns = [
path('', views.servicios, name='servicios'),
]
Después de que creamos el sitemap, tenemos que crear una URL para él. Edita el archivo urls.py de la aplicación PracticaDjango y añade el sitemap de la siguiente forma. Las nuevas líneas están resaltadas.
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.sitemaps.views import sitemap
from .sitemaps import BlogSitemap, StaticSitemap
sitemaps = {
'static':StaticSitemap, #add StaticSitemap to the dictionary
'blog':BlogSitemap #add DynamicSitemap to the dictionary
}
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('Proyecto_web_app.urls')),
path('servicios/', include('Servicios.urls')),
path('blog/', include('Blog.urls')),
path('contacto/', include('Contacto.urls')),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]
urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
En el código superior hemos añadido las importaciones necesarias, y definido un diccionario llamado sitemaps. Se pueden usar varios directorios para el sitio. Hemos definido un patrón URL que coincide con el patrón sitemap.xls y utiliza la vista del mapa del sitio proporcionada por Django. El diccionario sitemaps se pasa a la vista del mapa del sitio.
Por fin el mapa del sitio proporcionado por Django lo podemos encontrar en http://127.0.0.1/sitemap.xls. Ejecuta el servidor de desarrollo con "python manage.py runserver" y ve a esa dirección. Deberías ver todos los post del blog y las páginas estáticas que hayas añadido.
http://127.0.0.1/sitemap.xls
<urlset>
<url>
<loc>http://127.0.0.1:8000/</loc>
<changefreq>yearly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://127.0.0.1:8000/servicios/</loc>
<changefreq>yearly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://127.0.0.1:8000/contacto/</loc>
<changefreq>yearly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/11/13/post-usando-markdown/
</loc>
<lastmod>2023-11-13</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/10/27/post-septimo/
</loc>
<lastmod>2023-10-27</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://127.0.0.1:8000/blog/2023/10/27/post-sexto/</loc>
<lastmod>2023-10-27</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/10/27/quinto-post-para-ver-la-paginacion/
</loc>
<lastmod>2023-10-27</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/10/15/cuarto-post-para-ver-como-funciona-el-slug/
</loc>
<lastmod>2023-10-24</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/10/15/este-primer-post-prueba/
</loc>
<lastmod>2023-10-15</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/10/15/tercer-post-para-ver-como-sigue/
</loc>
<lastmod>2023-10-15</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>
http://127.0.0.1:8000/blog/2023/10/15/segundo-post-para-probar-mas/
</loc>
<lastmod>2023-10-15</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Código de este capitulo en GitHub.
No hay comentarios:
Publicar un comentario