【问题标题】:Issues with getting multiple site id in django在 django 中获取多个站点 ID 的问题
【发布时间】:2012-11-25 12:55:09
【问题描述】:

我在一个夹层项目中使用两个域名(.com 和 .mx)。当我使用 Site.objects.get_current() 函数获取当前站点 ID 时,它只返回一个1。 我在浏览器中使用的是 .com 还是 .mx。

我认为这是因为在我的 settings.py 中定义了 SITE_ID = 1,当我将其编辑为 2 时,Site.objects.get_current() 函数返回 2 .

但我真正想要的是按站点定义 模板 ,即当用户使用 .com 时,他会看到 a.html 并且当他使用 .mx他会看到 b.html。但正如我所说的 Site.objects.get_current() 函数只给我一个 id 无论我使用 .com 还是 .mx ,所以我可以'不按站点定义模板。

所以请建议我一些获取动态站点 ID 的方法,或者还有另一种方法可以按站点定义模板

【问题讨论】:

    标签: python django templates mezzanine multiple-sites


    【解决方案1】:

    这并不是站点框架的工作方式。为了区分使用站点框架的站点,每个站点都必须有自己的设置模块(因为这是您设置SITE_ID 的地方)。

    您正在寻找的是一种从请求中获取当前站点的方法。您可以为此使用RequestSite 对象:

    from django.contrib.sites.models import RequestSite    
    site_name = RequestSite(request).domain
    

    还有django-dynamicsites 也有一些额外的功能(重定向、模板/网址分配……)

    【讨论】:

    • Mezzanine 实现了动态站点加载,它放弃了使用 SITE_ID,所以这个答案有点误导。看看这方面的文档:mezzanine.jupo.org/docs/…
    • 还可以查看mezzanine.utils.sites.current_site_id,它提供了对当前正在访问的站点 ID 的访问权限。
    猜你喜欢
    • 2015-05-13
    • 2011-08-23
    • 1970-01-01
    • 2021-11-30
    • 2013-02-02
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多