tun*_*nak 5 python sitemap django django-sitemaps
我有以下网址配置
url(r'^sitemap\.xml$', index, {'sitemaps': sitemaps}),
url(r'^sitemap-(?P<section>.+)\.xml', cache_page(86400)(sitemap), {'sitemaps': sitemaps}),
Run Code Online (Sandbox Code Playgroud)
并且站点地图包括以下站点地图
class ArticlesDetailSiteMap(Sitemap):
changefreq = "daily"
priority = 0.9
def items(self):
return Article.objects.filter(is_visible=True, date_published__lte=timezone.now())
Run Code Online (Sandbox Code Playgroud)
但是有超过50.000条文章。所以我尝试时会收到超时错误, /sitemap-articles.xml因为它会尝试获取所有文章。
任何想法我应该如何创建索引并使分页在这里工作,如以下文档中所述,
https://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/#creating-a-sitemap-index
我已设置 limit=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())
Run Code Online (Sandbox Code Playgroud)
它为所有按 5000 分页的文章创建了分页 url
小智 3
尝试这个
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
Run Code Online (Sandbox Code Playgroud)
进而
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)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下 URL 访问站点地图sitemap\.xml?page=5