如何更改密码重置表格的页面标题?

时间:2018-12-01 15:12:39

标签: django

我使用的是django随附的默认密码重置表单。.我通过在urls.py中添加以下代码行来更改了管理网站的标题

admin.site.site_header = 'My Site Name'

但是,密码保留表单仍显示“ Django Administration”代替站点标题,如所附图像所示。我该如何更改? Password Reset Form

1 个答案:

答案 0 :(得分:0)

尽管reset_password_form.htmladmin/base_site.html的扩展名。但是看来site_header文本不是从视图发送到模板的(可能是因为它不是实际管理网站的一部分,或者模板是出于示例目的)。因此,您可以从django.contrib.auth.views.PasswordResetView创建一个新的View子类,并通过context传递此信息。尝试这样:

from django.contrib.auth.views import PasswordResetView
from django.contrib import admin


class CustomResetPasswordView(PasswordResetView):
    def get_context_data(self, **kw):
        context = super().get_context_data(**kw)
        context['site_header'] = getattr(admin.sites, 'site_header')  # get site header text. For django 2.X it should be getattr(admin.sites.AdminSite, 'site_header')
        return context

并在您的网址中使用它:

path('reset_passowrd/', CustomResetPasswordView.as_view()),

OR

编写一个发送site_header的上下文处理器,如下所示:

# your_app/context_processors.py
def admin_header_processor(request):
    site_header = getattr(admin.sites, 'site_header')  # get site header text. For django 2.X it should be 
    return {"site_header": site_header}

并将其添加到context_processors内的TEMPLATES

'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'your_app.context_processors.admin_header_processor',
],