首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用站点框架生成Django站点地图

使用站点框架生成Django站点地图
EN

Stack Overflow用户
提问于 2019-11-10 18:06:22
回答 1查看 420关注 0票数 3

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

下面是我想要做的事情的一个例子:

代码语言:javascript
运行
复制
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)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-20 15:39:07

尝试以下示例:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
urlpatterns = [
    url('sitemap.xml', sitemap, {
        'sitemaps': {'blog': BlogSitemap}
    }, name='django.contrib.sitemaps.views.sitemap'),

    # ...
    # other your urls
]

现在应该可以用了。如果你有什么问题请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58791521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档