首页 > 解决方案 > 更新用户配置文件 - Django

问题描述

我创建了一个模板,用于使用 Bootstrap 片段(来自https://www.bootdey.com)更新帐户配置文件。使用 django 默认格式(如 {{ form.as_p }}),可以更新帐户(例如,当我修改名字时,它会在数据库中更改)。当我使用 bootstrap 片段时,它不会更新:它直接进入“主页”而不更新(如 views.py 中所述)。

在forms.py

class EditAccountForm(UserChangeForm):

  class Meta:
      model = Account
      fields = ('email','first_name','last_name')

在views.py

def EditProfile(request):
  context= {}
  if request.POST:
    form = EditAccountForm(request.POST, instance=request.user)
    if form.is_valid():
        form.save()
        email = form.cleaned_data.get("email")
        raw_password = form.cleaned_data.get("password1")
        account = authenticate(email=email,password=raw_password)
        return redirect('profile_page')
    else:
        context['edit_form'] = form
        return redirect('homepage')
 else:
    form = EditAccountForm(instance=request.user)
    context['edit_form'] = form
 return render(request,'Account/edit_page.html',context)

模板:edit_profile.html(我只展示了 first_name 部分作为示例)

 <form method = "POST" class="form" novalidate="">
                {% csrf_token %}
                <div class="row">
                  <div class="col">
                    <div class="row">
                      <div class="col">
                        <div class="form-group">
                          <label>First name</label>
                          <input class="form-control" type="text" name="firstna"  value={{ edit_form.first_name.value }}>

                        </div>      
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col d-flex justify-content-end">
                    <button class="btn btn-primary" type="submit">Save Changes</button>

PS:我更喜欢使用这些片段而不是 Django 风格,因为我发现它们更有吸引力并提供更多自由。

标签: pythondjangodjango-templates

解决方案


如果您正在更改视图中的数据,例如在模板中使用 (name="firstna"),请检查您是否采用相同的值,因此对于 First Name,您必须在视图中采用相同的值。

同样的问题在这里问你可以去下面的链接

[如何在 Django 中更新用户配置文件


推荐阅读