我正在寻找一种在模板中显示我的Django-CMS站点名称的方法。
我在this guide之后创建了一个基本的Django-CMS网站。默认站点名为Example.com,我可以将此名称从管理部分更改为"我的超级站点"。
接下来,我尝试按照this guide自定义并应用主题。它建议使用{{ request.site.name }}
在页面上显示网站的名称。然而,这变为空,{{ request.site }}
也是如此。
我进一步搜索,发现几个页面接近主题,其中的命题越来越复杂,它们越老。最近的那些,如this one,表明这与django-cms无关,而与django本身和网站框架无关。
我查看了文档,特别是this page和this one,如果我理解正确的话,表明网站中间件一旦激活,就会在模板中提供的请求对象中包含一个站点对象。我检查并启用了网站框架(' django.contrib.sites'在INSTALLED_APPS设置中,SITE_ID定义并且迁移运行)。所以,我不明白为什么{{ request.site }}
是空的。
为了澄清事情,我不是在寻找域名或主机。我正在寻找用户友好的名称,在django-cms的“显示名称”下找到的名称。在“变更网站”中#39;管理/网站部分。
感谢您的帮助。
答案 0 :(得分:4)
确保将'django.core.context_processors.request'
添加到您的上下文处理器。
像这样:
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'django.core.context_processors.request',
],
},
},
]
同时将django.contrib.sites.middleware.CurrentSiteMiddleware
添加到您的MIDDLEWARE
设置中。
答案 1 :(得分:0)
对于较新版本的django,即> .3,仅添加
req.body.RefCode
<input
type="RefCode"
id="refcode"
name="refcode"
class="form-control"
value="<%= user[i].id %>"
readonly="readonly"
/>
<button onclick="updateData()"</button>
<script>
const updateData = async () =>{
const userId= document.getElementById("refcode");
const result= await fetch(url, {
method:'PUT', // You can also use POST here
body:userId
}
console.log(result)
}
<script>
中的MIDDLEWARE起作用。然后打电话
'django.contrib.sites.middleware.CurrentSiteMiddleware',
在您的模板中。