0

Django 版本 3.2.4

我正在尝试更改管理站点使用的默认index_title,site_header和。site_title我在这里尝试了所有建议,但登录页面拒绝使用更新后的值。事实上,所需的上下文(site_header在下面的示例中)是空的(通过覆盖模板并使用此处{{ debug }}描述的变量来确认)并且正在使用“Django 管理”的“默认”值。模板中的一行:C:\Program Files\Python38\Lib\site-packages\django\contrib\admin\templates\admin\base_site.html

<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }} a</a></h1>

我目前在我的应用程序admin.py文件中覆盖了所有三个变量,并且在我登录后正在使用更新的值,但它在初始登录页面上不起作用:

admin.site.site_header = 'My Site Header'
admin.site.index_title = 'My Index Title'
admin.site.site_title = 'My Site Title'

我可以覆盖base_site.html模板并硬编码一个值,但我想了解为什么这是必要的,并弄清楚如何将一些上下文传递给该覆盖的模板。我已经尝试了所有覆盖此处描述的原始上下文的方法,但均无济于事。这包括拥有一个覆盖默认管理站点的自定义管理站点。我还注意到在初始登录页面上没有调用each_context方法,但是在我登录并查看管理页面后调用它。

我认为某些问题可能源于我的urlpatterns设置方式urls.py。我已经将其设置为这样,因此地址栏中显示的登录 URL 对于站点的管理员和非管理员部分都是相同的。

urlpatterns = [
    path('', include('my_app.urls')),
    path('login', auth_views.LoginView.as_view(template_name='admin/login.html')),
    path('login/', auth_views.LoginView.as_view(template_name='admin/login.html')),
    path('logout', auth_views.LogoutView.as_view()),
    path('logout/', auth_views.LogoutView.as_view()),
    path('admin/login', generic_views.RedirectView.as_view(url='/admin', permanent=True, query_string=False)),
    path('admin/login/', generic_views.RedirectView.as_view(url='/admin', permanent=True, query_string=False)),
    path('admin/logout', auth_views.LogoutView.as_view()),
    path('admin/logout/', auth_views.LogoutView.as_view()),
    path('admin/', admin.site.urls)
]

我也专门使用django_auth_ldap.backend.LDAPBackend

AUTHENTICATION_BACKENDS = [
    'django_auth_ldap.backend.LDAPBackend'
]

任何指导将不胜感激。

4

1 回答 1

0

我通过创建以下上下文处理器解决了我的问题:

from django.contrib import admin


def global_context(request):
    """
    This is intended to be a global context processor.  Any templates rendered from views using the
    `django.template.RequestContext` context (the default context used by generic views) will have this context
    available to them.
    """

    context = {
        'index_title': admin.site.index_title,
        'site_header': admin.site.site_header,
        'site_title': admin.site.site_title
    }

    return context

这与将admin.site.index_title,admin.site.site_header和设置admin.site.site_title为所需的值一起使admin.py事情按预期工作。

于 2021-07-01T17:25:56.103 回答