自定义Django管理后台修改密码页面

5
我想要自定义我的change_password页面,我已经在使用Django的管理员登录(使用from django.contrib.auth.decorators import login_required)。已经使管理员登录工作正常,但是我想更改change_password页面。
我该如何做呢? 我不确定如何链接到管理员登录,或者因为我想自定义我的change_password,所以我必须自定义我的管理员登录吗?
需要一些指导。谢谢...
2个回答

9
你可以导入表单: from django.contrib.auth.views import password_change 如果你查看Django的password_change视图,你会注意到它接受一些参数,你可以提供这些参数来自定义视图以满足你自己的需求,从而使你的Web应用程序更加DRY。
def password_change(request,
                    template_name='registration/password_change_form.html',
                    post_change_redirect=None,
                    password_change_form=PasswordChangeForm,
                    current_app=None, extra_context=None):
    if post_change_redirect is None:
        post_change_redirect = reverse('django.contrib.auth.views.password_change_done')
    if request.method == "POST":
        form = password_change_form(user=request.user, data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(post_change_redirect)
    else:
        form = password_change_form(user=request.user)
    context = {
        'form': form,
    }
    if extra_context is not None:
        context.update(extra_context)
    return TemplateResponse(request, template_name, context,
                            current_app=current_app)

最值得注意的是,template_nameextra_context,这样您的视图将如下所示

from django.contrib.auth.views import password_change

def my_password_change(request)
        return password_change(template_name='my_template.html', extra_context={'my_var1': my_var1})

4
Django的模板查找器允许您覆盖任何模板,在您的模板文件夹中添加要覆盖的管理模板即可,例如:
templates/
   admin/
      registration/
         password_change_form.html
         password_reset_complete.html
         password_reset_confirm.html
         password_reset_done.html
         password_reset_email.html
         password_reset_form.html

我的意思是说我应该在我的模板文件夹中有一个额外的管理文件夹?我理解得对吗?还是编辑Django提供的管理文件夹?顺便问一下,Django的管理文件夹在哪里? - lakshmen
我在我的应用程序中添加了管理模板,但是Django仍然选择默认的管理模板。 - Pasada
3
@Pasada 可能是因为您的应用程序在 INSTALLED_APPS 中位于 django.contribute.admin 下。 - gregoltsov
1
@Gregory Goltsov 谢谢,你最后的评论对我很有帮助。 :) - Kamyar Ghasemlou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接