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