在 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.com
populated 的站点。
【问题讨论】:
【参考方案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 中更改站点名称的主要内容,如果未能解决你的问题,请参考以下文章