gpt4 book ai didi

django - 使用站点框架生成 Django 站点地图

转载 作者:行者123 更新时间:2023-12-04 15:38:48 25 4
gpt4 key购买 nike

我正在使用带有 RequestSite(未设置 SITE_ID)的网站框架来生成基于域的内容。我需要为每个域生成具有不同结果的站点地图,但我没有找到使这两个框架协同工作的方法。有什么方法可以在Sitemap中得到当前请求的Site吗? (从 SITE_ID 配置获取它对我来说不是一个选项)。

这是我想做的一个例子:

from django.contrib.sitemaps import Sitemap
from blog.models import Entry

class BlogSitemap(Sitemap):

def items(self, request):
return Entry.objects.filter(is_draft=False, site=request.site)

但这不可能,因为items() 中没有request。有没有其他方法可以根据站点过滤站点地图中的项目?

最佳答案

试试下面的例子:


from django.contrib.sitemaps import Sitemap
from django.contrib.sitemaps.views import sitemap

from blog.models import Entry


class BlogSitemap(Sitemap):
_cached_site = None

def items(self):
return Entry.objects.filter(is_draft=False, site=self._cached_site)

def get_urls(self, page=1, site=None, protocol=None):
self._cached_site = site
return super(BlogSitemap, self).get_urls(page=page, site=site, protocol=protocol)

并且在 urls.py

urlpatterns = [
url('sitemap.xml', sitemap, {
'sitemaps': {'blog': BlogSitemap}
}, name='django.contrib.sitemaps.views.sitemap'),

# ...
# other your urls
]

现在应该可以了。如果您有任何问题,请告诉我。

关于django - 使用站点框架生成 Django 站点地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com