如何在Django的模板中显示网站的用户友好名称?

时间:2017-03-25 21:42:38

标签: django django-templates django-cms

我正在寻找一种在模板中显示我的Django-CMS站点名称的方法。

我在this guide之后创建了一个基本的Django-CMS网站。默认站点名为Example.com,我可以将此名称从管理部分更改为"我的超级站点"。 接下来,我尝试按照this guide自定义并应用主题。它建议使用{{ request.site.name }}在页面上显示网站的名称。然而,这变为空,{{ request.site }}也是如此。

我进一步搜索,发现几个页面接近主题,其中的命题越来越复杂,它们越老。最近的那些,如this one,表明这与django-cms无关,而与django本身和网站框架无关。

我查看了文档,特别是this pagethis one,如果我理解正确的话,表明网站中间件一旦激活,就会在模板中提供的请求对象中包含一个站点对象。我检查并启用了网站框架(' django.contrib.sites'在INSTALLED_APPS设置中,SITE_ID定义并且迁移运行)。所以,我不明白为什么{{ request.site }}是空的。

为了澄清事情,我不是在寻找域名或主机。我正在寻找用户友好的名称,在django-cms的“显示名称”下找到的名称。在“变更网站”中#39;管理/网站部分。

感谢您的帮助。

2 个答案:

答案 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',

在您的模板中。