Nə üçün sayt xəritəsi və lent
Axtarış robotu yalnız keçidlərlə gedə bilir. Dərin və ya yeni səhifələr gec tapılır. sitemap.xml isə URL-lərin açıq siyahısıdır. RSS/Atom lenti isə eyni məzmunu maşın oxuya bilən formada paylayır. Django bunların hamısını django.contrib ilə verir.
| Alət | Ünvan | Kimin üçün |
|---|---|---|
Sitemap | /sitemap.xml | axtarış robotları |
Feed | /feeds/rss/ | oxucu proqramlar |
| robots.txt | /robots.txt | bütün robotlar |
Quraşdırma
INSTALLED_APPS-a django.contrib.sites, django.contrib.sitemaps və django.contrib.syndication əlavə edin. SITE_ID = 1 təyin edin. sites olmasa Django cari sorğunun hostunu işlədir, amma sites ilə domen bir yerdə saxlanılır.
# settings.py
INSTALLED_APPS = [
# ...
"django.contrib.sites",
"django.contrib.sitemaps",
"django.contrib.syndication",
"blog",
]
SITE_ID = 1⚠️
migrate-dən sonra standartSiteyazısıexample.com-dur. Admin-də və ya shell-də onu real domenə dəyişin:Site.objects.update(domain="example.org", name="Example").
Sitemap sinfi
Model get_absolute_url() metoduna malik olmalıdır. Sitemap-in items() metodu obyektləri verir, lastmod() dəyişmə tarixini.
# blog/models.py
from django.db import models
from django.urls import reverse
class Post(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(unique=True)
body = models.TextField()
published = models.BooleanField(default=False)
published_at = models.DateTimeField(null=True, blank=True)
updated_at = models.DateTimeField(auto_now=True)
def get_absolute_url(self):
return reverse("blog:post-detail", kwargs={"slug": self.slug})# blog/sitemaps.py
from django.contrib.sitemaps import Sitemap
from django.urls import reverse
from .models import Post
class PostSitemap(Sitemap):
changefreq = "weekly"
priority = 0.8
protocol = "https"