在 Django 1.9 中更改站点名称

Posted

技术标签:

【中文标题】在 Django 1.9 中更改站点名称【英文标题】:Changing Site Name in 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 的站点。

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于在 Django 1.9 中更改站点名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 模板中获取站点名称?

Django 管理站点,更改不同用户的模型可见性

在 MVC 4.0 站点中升级 jQuery 1.9 时不显眼的 jQuery 失败

完全自定义 django 管理站点

django wsgi 错误找不到名为站点名称的模块

用于在URL别名更改上更改Drupal站点名称