2012-06-29 23 views
4

我想擁有自己的自定義change_password頁面,我已經使用Django的管理員登錄(使用from django.contrib.auth.decorators import login_required)。
得到管理登錄工作,但想要更改change_password頁面。自定義Django Admin更改密碼頁面

我該怎麼做?
我不知道如何鏈接到管理員登錄,或者因爲我想自定義我的change_password,我還必須自定義我的管理員登錄名?

需要一些指導。謝謝...

回答

8

可以導入形式

from django.contrib.auth.views import password_change

如果你看看Django的password_change視圖。您會注意到它需要一個視圖參數,您可以根據自己的需要提供自定義視圖,從而使您的web應用更加乾爽。

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}) 
3

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 
+0

意思就是說,我應該在我的模板文件夾額外的管理文件夾?我知道它是正確的嗎?或者編輯django提供的admin文件夾? btw django admin文件夾在哪裏? – lakesh

+2

是的。真正的文件夾位於django.contrib.admin –

+0

它似乎不是你的。我在我的應用程序中添加了管理模板,但django仍然選擇默認管理模板。 – Pasada