Вы можете перейти к шагу 4, если хотите проверить его с помощью своего существующего проекта
1- Intorduction 2- Настройка среды 3- Настройка проекта 4- Добавить карту сайта
Вступление
Карта сайта сообщает поисковым системам, какие страницы и файлы, которые вы считаете важными на вашем сайте, а также предоставляет ценную информацию об этих файлах. Это помогает поисковым системам быстро ползти на вашем сайте.
Настройка среды
- Создайте свою виртуальную среду или используйте существующую:
Python -m venv env
- активируйте свою виртуальную среду
источник Env/корзин/активировать
- Установите Django
PIP установить Django
Настройка проекта
- Создайте новую папку
Mkdir django-add-sitemap && cd django-add-sitemap
- Создать новый проект
django-admin startproject config.
- Создать новое приложение
Python Manage.py StartApp Blog
и добавить его вInsted_apps
- Редактировать
blog/models.py
и вставьте в него этот код:
from django.db import models from django.urls import reverse class Post(models.Model): STATUS_CHOICES = [('published', 'Published'), ('draft', 'Draft')] title = models.CharField(max_length=250) content = models.TextField() created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) status = models.CharField(max_length=12, choices=STATUS_CHOICES, default='draft') def __str__(self): return self.title def get_absolute_url(self): return reverse('post-detail', kwargs={'slug': self.slug}) @receiver(post_save, sender=Post) def save_slug(sender, instance=None, created=False, **kwargs): if created: instance.slug = slugify(instance.title) instance.save()
- запустить
Python Manage.py Makemigrations
ТогдаPython Manage.py Migrate
И не забудьте создать суперпользовательPython Manage.py CreateSuperuser
- Добавить сообщение в
admin.py
и добавьте несколько данных для тестирования позже.
- Сначала добавить
django.contrib.sitemaps
кInsted_apps
- Создать
blog/sitemaps.py
Затем вставьте в него этот код:
from django.contrib import sitemaps from .models import Post class PostSitemap(sitemaps.Sitemap): changefreq = "weakly" priority = 0.8 def items(self): return Post.objects.filter(status='published') def lastmod(self, obj): return obj.updated
changefreq
Этот атрибут используется, чтобы сказать, как часто меняется ваш сайт. Другие значения [«Всегда», «ежечасно», «ежедневно», «ежемесячно», «ежегодно», «никогда»]
Анкет Вы можете переопределить по умолчанию Место
Метод, если у вас нет get_absolute_url
в вашей модели.
- Наконец, сопоставьте URL для сайтов в
config/urls.py
илиблог/urls.py
файл.
# config/urls.py from django.contrib.sitemaps.views import sitemap from blog.sitemaps import PostSitemap sitemaps = { "posts": PostSitemap, } urlpatterns = [ .......... path("sitemap.xml", sitemap, {"sitemaps": sitemaps}, name="sitemap"), ......... ]
Вот как это выглядит в браузере:
исходный код загружается в GitHub: https://github.com/abdulshak1999/python/tree/main/django/website_sitemap
Для получения дополнительной информации проверьте это: https://docs.djangoproject.com/en/3.0/ref/contrib/sitemaps/
Оригинал: “https://dev.to/abdulshakoor/add-sitemap-to-your-django-site-2eg9”