自定义Django Admin更改密码页面

lak*_*esh 4 django django-admin

我想拥有自己的自定义change_password页面,我已经在使用Django的管理员登录(使用from django.contrib.auth.decorators import login_required).
管理员登录工作但想要更改change_password页面.

我怎么做?
我不确定如何链接到管理员登录,或者因为我想自定义我的change_password,我还必须自定义我的管理员登录?

需要一些指导.谢谢...

sup*_*er9 9

您可以导入表单

from django.contrib.auth.views import password_change

如果你看一下Django的password_change视图.您会注意到它带有一个视图参数,您可以根据自己的需要自定义视图,从而使您的webapp更加干燥.

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)
Run Code Online (Sandbox Code Playgroud)

最值得注意的是,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})
Run Code Online (Sandbox Code Playgroud)