Django允许用户编辑他们的个人资料
如何创建一个允许用户编辑自己的配置文件的函数 views.pyDjango允许用户编辑他们的个人资料,django,edit,Django,Edit,如何创建一个允许用户编辑自己的配置文件的函数 views.py @login_required def edit_user(request): if '_auth_user_id' in request.session: userId = request.session['_auth_user_id'] userDetails = User.objects.get(pk=userId) if request.method == 'POST':
@login_required
def edit_user(request):
if '_auth_user_id' in request.session:
userId = request.session['_auth_user_id']
userDetails = User.objects.get(pk=userId)
if request.method == 'POST':
form = UserProfileForm(request.POST, request.FILES)
userDetails.first_name = request.POST['firstname']
userDetails.last_name = request.POST['lastname']
userDetails.email = request.POST['email']
userDetails.zip = request.POST['zip']
if form.is_valid():
userDetails.save()
return HttpResponseRedirect('/edit_user/')
else:
form = UserProfileForm()
variables = RequestContext(request, {'form': form})
return render_to_response('edit_user.html',variables,)
forms.py
class UserProfileForm(forms.Form):
email = forms.EmailField(label='Email', max_length=254)
firstname = forms.CharField(label='First Name', max_length=20)
lastname = forms.CharField(label='Last Name', max_length=20)
zip = forms.CharField(label='Zipcode', max_length=5)
编辑_user.html
<form class="form-signin" action="/edit_user/" method="post" enctype="multipart/form-data">{% csrf_token %}
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-info"> Save Edits</button>
</form>
{%csrf\u令牌%}
{%csrf_令牌%}
{{form.as_p}}
保存编辑结果
它将不显示字段,显示为空:
在登录(请求,用户)
之后,您可以在会话中通过\u auth\u user\u id
访问用户信息,如
request.session[\u auth\u user\u id]
。因此,您可以创建一个类似“编辑配置文件”的函数
def edit_profile(request):
template_var = {}
if '_auth_user_id' in request.session:
userId = request.session['_auth_user_id']
new_profile_user = Profile.objects.get(user_id=userId)
userDetails = User.objects.get(pk=userId)
if request.method == 'POST':
userDetails.first_name = request.POST['first_name']
userDetails.email = request.POST['email']
userDetails.save()
template_var['new_profile_user']=new_profile_user
return render_to_response('edit_user.html',template_var,)
现在在您的模板中执行{{new_profile_user.first_name}}我的代码:
def profile_edit(request, template_name='profile_edit.html'):
if request.method == 'POST':
form = ProfileForm(data=request.POST, instance=request.user)
if form.is_valid():
user_profile = form.save(commit=False)
user_profile.save()
return redirect('index')
else:
form = ProfileForm(instance=request.user)
return render(request, template_name,{'form': form})
谢谢你的快速回复。请查看我编辑的帖子,它不会显示任何字段表单。谢谢。@user4234041将
enctype=“multipart/form data”
也包含在其中,并且您的render\u to\u响应
没有form
dict。。你明白了吗?我现在明白了,我忘了包括口述表,谢谢你的提醒。我还有一个问题,我将如何显示用户的信息(在用户想要进行任何更改之前)?谢谢。哦!我的ans crct然后给我打勾。。我一定会帮助你……:)