5

我有以下网址配置

url(r'^sitemap\.xml$', index, {'sitemaps': sitemaps}),
url(r'^sitemap-(?P<section>.+)\.xml', cache_page(86400)(sitemap), {'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 篇文章。所以我在尝试时遇到超时错误, /sitemap-articles.xml因为它试图获取所有文章。

任何想法我应该如何创建索引并使分页在这里工作,如下面的文档中所述,

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

4

2 回答 2

3

我已经设置了 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())

它为所有以 5000 分页的文章创建了分页 URL

于 2014-07-15T14:49:41.623 回答
3

尝试这个

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

于 2014-07-14T17:10:45.637 回答