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

How to display the site's user friendly name in a template in Django?

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

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

也是如此

我进一步搜索,发现有几页越老,越接近这个主题,命题越复杂。最近的一些,比如 this one,表明这与 django-cms 无关,而是与 django 本身和站点框架有关。

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

澄清一下,我不是在寻找域名或主机。我正在寻找用户友好的名称,在 administration/sites.

的 'Change site' 部分的 'Display Name' 下的 django-cms 中找到的名称

感谢您的帮助。

确保将 'django.core.context_processors.request' 添加到您的上下文处理器。

像这样:

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.core.context_processors.request',
            ],
        },
    },
]

同时将 django.contrib.sites.middleware.CurrentSiteMiddleware 添加到您的 MIDDLEWARE 设置中。

对于较新版本的 django 即.. >3,仅添加

'django.contrib.sites.middleware.CurrentSiteMiddleware',

settings.py 中的 MIDDLEWARE 工作。然后调用

{{request.site.name}}

在您的模板中。