我使用的是django随附的默认密码重置表单。.我通过在urls.py中添加以下代码行来更改了管理网站的标题
admin.site.site_header = 'My Site Name'
但是,密码保留表单仍显示“ Django Administration”代替站点标题,如所附图像所示。我该如何更改? Password Reset Form
答案 0 :(得分:0)
尽管reset_password_form.html是admin/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',
],