Django允许用户编辑他们的个人资料

Django允许用户编辑他们的个人资料,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':

如何创建一个允许用户编辑自己的配置文件的函数

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':
            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然后给我打勾。。我一定会帮助你……:)