2011-12-04 50 views
0

我試圖通過ModelForm使用django.contrib.auth.models.User模型創建一個簡單的「配置文件編輯」窗體。這是我目前有:通過ModelForm編輯django.auth用戶

形式:

class UserEditForm(ModelForm): 
    class meta: 
     model = User 

    def __init__(self, *args, **kwargs): 
     self.request = kwargs.pop('request', None) 
     super(UserEditForm, self).__init__(*args, **kwargs) 

查看:

def edit_user(request, user): 
    user = get_object_or_404(User, username__exact = user) 

    form = UserEditForm(request.POST or None, request=request, instance=user) 

    return render_to_response('forms.html', add_csrf(request, form=form, title='Edit User'), context_instance=RequestContext(request)) 

邏輯上,這看起來像它應該工作,但編輯的用戶表單顯示不出來在我的模板中,當我加載頁面。我錯過了什麼?

+0

什麼是'add_csrf'? –

回答

1

Django已經爲你提供了幫助表單;你可以找到in the documentation

如果您仍然想使用自己的帳戶,則需要記住登錄用戶已經是請求的一部分,因此您可以簡化視圖。由於您已經使用了RequestContext,只要CSRF中間件處於您的設置中(正如U-DON所指出的那樣),就不需要做其他任何事情來添加CSRF代碼。

from django.contrib.auth.decorators import login_required 

@login_required 
def edit(request) 
    # This body will only run if the user is logged in 
    # and the current logged in user will be in request.user 

    edit_form = UserEditForm(instance=request.user) 
    return render_to_response('forms.html', 
          {'form':edit_form}, 
          context_instance=RequestContext(request))