/ / Jak utworzyć indeks dla map witryn django dla ponad 50 000 adresów URL - python, django, sitemap, django-sitemaps

Jak utworzyć indeks dla map witryn django dla ponad 50 000 adresów URL - python, django, sitemap, django-sitemaps

Mam następującą konfigurację adresu URL

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

a mapy witryn obejmują następujące mapy witryny

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

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

ale istnieje ponad 50 000 artykułów. Otrzymuję błąd limitu czasu podczas próby /sitemap-articles.xml ponieważ próbuje zdobyć wszystkie artykuły.

Wszelkie pomysły, w jaki sposób powinienem utworzyć indeks i sprawić, by podział na strony działał tutaj, tak jak to opisano w poniższej dokumentacji,

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

Odpowiedzi:

2 dla odpowiedzi № 1

Spróbuj tego

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

I wtedy

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)

Możesz także uzyskać dostęp do mapy witryny za pomocą takich adresów URL sitemap.xml?page=5


0 dla odpowiedzi nr 2

Wprowadziłem limit = 5000 i rozwiązano problem.

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())

i stworzył paginowane adresy URL dla wszystkich artykułów podzielonych na strony przez 5000