编辑django文件.通过ModelForm验证用户



我试图通过ModelForm使用django.contrib.auth.models.User模型创建一个简单的'配置文件编辑'表单。这是我目前的文件:

形式:

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

从逻辑上讲,这似乎应该工作,但是当我加载页面时,用于编辑用户的表单没有显示在我的模板中。我错过了什么?

Django已经为此提供了帮助表单;您可以在文档中找到。

如果您仍然希望使用自己的视图,则需要记住,登录的用户已经是请求的一部分,因此可以简化视图。因为你已经使用了RequestContext,你不需要做任何其他的事情来添加CSRF代码——只要CSRF中间件在你的设置中(如U-DON所指出的)。

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

最新更新