在 Django 中更新用户

Updating user in django

在我的应用程序中,我使用电子邮件和密码进行用户身份验证,效果很好。但是,我想为用户提供向其帐户添加其他信息的选项,例如名字、姓氏和出生日期。

我在 myapp.forms.py

中有一个更改表格
class MyChangeForm(forms.ModelForm):
    """
    Form for editing an account.
    """

    first_name = forms.CharField(widget=forms.TextInput, label="First name")
    last_name = forms.CharField(widget=forms.TextInput, label="Last name")
    date_of_birth = forms.DateField(widget=forms.DateField, label="Date of birth")

    class Meta:
        model = MyUser
        fields = ['first_name', 'last_name', 'date_of_birth']

    def save(self, commit=True):
        user = super(MyChangeForm, self).save(commit=False)
        if commit:
            user.save()
        return user

在我的views.py中,我有以下更新方法

@login_required(login_url='/')
def update_user(request):
    if request.method == 'POST':
        form = MyChangeForm(request.POST, instance=request.user)
        if form.is_valid():
            user = form.save(commit=False)
            user.save()
            return HttpResponseRedirect('/')
    else:
        form = MyChangeForm(instance=request.user)
    return render_to_response('update_user.html', context_instance=RequestContext(request))

而我的update_user.html如下

{% extends 'user_base.html' %}

{% block content %}

 <div class="col-sm-3 col-sm-offset-5"> 
   <h1> Update User</h1>
     <form method='POST' action='/update_user/'> {% csrf_token %}
       <ul>
         {{ form.as_table }}
       </ul>
       <input type='Submit' class='btn btn-primary btn-block'>
     </form>
 </div> 

{% endblock %} 

但是,当我提供文件时,我看到了这个:

看到这里,无法进入我的字段!

我该如何解决这个问题?这可能很容易,但我的视野越来越狭窄。

爱丽普

将表单添加到上下文中,例如:

render('update_user.html', {'form': form})