/ / So erstellen Sie einen Index für Django-Sitemaps für über 50.000 URLs - Python, Django, Sitemap, Django-Sitemaps

Wie man einen Index für Django-Sitemaps für über 50.000 URLs erstellt - Python, Django, Sitemap, Django-Sitemaps

Ich habe die folgende URL-Konfiguration

url(r"^sitemap.xml$", index, {"sitemaps": sitemaps}),
url(r"^sitemap-(?P<section>.+).xml", cache_page(86400)(sitemap), {"sitemaps": sitemaps}),

und Sitemaps enthalten folgende Sitemap

 class ArticlesDetailSiteMap(Sitemap):
changefreq = "daily"
priority = 0.9

def items(self):
return Article.objects.filter(is_visible=True, date_published__lte=timezone.now())

aber es gibt mehr als 50.000 Artikel. So bekomme ich eine Zeitüberschreitung, wenn ich es versuche /sitemap-articles.xml weil es versucht, alle Artikel zu bekommen.

Irgendwelche Ideen, wie ich einen Index erstellen und die Paginierung hier funktionieren lassen soll, wie es in der Dokumentation unten steht,

https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/#creating-a-sitemap-index

Antworten:

2 für die Antwort № 1

Versuche dies

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

Und dann

article_list = Article.objects.filter(is_visible=True, date_published__lte=timezone.now())
paginator = Paginator(article_list, 10)
page = request.GET.get("page")


try:
articles = paginator.page(page)
except PageNotAnInteger:
articles = paginator.page(1)
except EmptyPage:
articles = paginator.page(paginator.num_pages)

Und Sie können die Sitemap mit den URLs wie zugreifen sitemap.xml?page=5


0 für die Antwort № 2

Ich habe limit = 5000 gesetzt und das Problem behoben.

class ArticlesDetailSiteMap(Sitemap):
changefreq = "daily"
priority = 0.9
limit = 5000

def items(self):
return Article.objects.filter(is_visible=True, date_published__lte=timezone.now())

und es wurden paginierte URLs für alle Artikel mit einer Paginierung von 5000 erstellt