【问题标题】:Changing Site Name in Django 1.9在 Django 1.9 中更改站点名称
【发布时间】:2017-10-19 18:49:37
【问题描述】:

我目前正在学习一个介绍自定义 Bootstrap 3 模板并使用它构建 Django 站点的教程。在教程中,他们建议更改以下模板 sn-p:

<a class="navbar-brand" href="index.html">Start Bootstrap</a>

到下面的sn-p。

<a class="navbar-brand" href="/">{{ request.site.name }}</a>

但是,当我进行此更改时,没有显示站点名称。我想知道我应该在哪里设置这个名字。如果有帮助,我正在使用 Django CMS,并且在管理的 Sites 部分中只有一个名为 example.compopulated 的站点。

【问题讨论】:

    标签: python django twitter-bootstrap django-cms


    【解决方案1】:

    遇到同样的问题,找到this in the documentation

    如果你经常使用这种模式:

    from django.contrib.sites.models import Site
    
    def my_view(request):
        site = Site.objects.get_current()
    

    ...有一种简单的方法可以避免重复。将 django.contrib.sites.middleware.CurrentSiteMiddleware 添加到 MIDDLEWARE_CLASSES。中间件在每个请求对象上设置了站点属性,因此您可以使用 request.site 来获取当前站点。

    【讨论】:

      【解决方案2】:

      您可以在管理的Sites 部分添加站点名称或更改名为example.com 的现有站点。

      要访问Site 对象,您需要在settings.py 中提供SITE_ID

      如果您要更改 example.com,请在设置中使用 SITE_ID = 1

      要在 django 模板中呈现站点名称,请使用从站点模型中获取值

       from django.contrib.sites.models import Site
       current_domain = Site.objects.get_current().domain
      

      然后将current_domain 传递给模板

      【讨论】:

        【解决方案3】:

        好像需要开启sites框架,参考doc

        【讨论】:

          最近更新 更多