/ / Как да създадем индекс за django sitemaps за над 50 000 URL адреса - python, django, sitemap, django-sitemaps

Как да създадете индекс за django sitemaps за над 50,000 urls - python, django, sitemap, django-sitemaps

Имам следната конфигурация на URL адреса

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

и Sitemaps включват следната карта на сайта

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

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

но има повече от 50 000 статии. Така че аз получавам грешка timeout, когато се опитам /sitemap-articles.xml защото се опитва да получи всички статии.

Всякакви идеи как да създам индекс и да направя страницирането тук, както е посочено в документацията по-долу,

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

Отговори:

2 за отговор № 1

Опитайте тази

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

И тогава

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)

Можете да получите достъп до картата на сайта, като използвате URL адресите като sitemap.xml?page=5


0 за отговор № 2

Сложих лимит = 5000 и проблемът беше разрешен.

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

и създадоха странични URL адреси за всички статии, чиито страници са 5000