Обновление профиля пользователя - Django - PullRequest
0 голосов
/ 26 сентября 2019

Я создал шаблон для обновления профилей учетных записей с использованием фрагмента Bootstrap (из https://www.bootdey.com). В формате по умолчанию в django (например, {{form.as_p}})) обновление учетных записей работает (например, когда яизмените имя, оно изменяется в базе данных.) Когда я использую фрагмент начальной загрузки, оно не обновляется: оно идет прямо на «домашнюю страницу» без обновления (как описано в 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, так как я нахожу их более привлекательными и предоставляю больше свободы.

1 Ответ

0 голосов
/ 26 сентября 2019

Пожалуйста, проверьте, что вы принимаете то же значение, если вы изменяете данные в представлениях, например, если вы используете (name = "firstna") в шаблоне, поэтому для имени вам нужно использовать одно и то же в представлениях.

Тот же вопрос задается здесь, вы можете перейти и перейти по ссылке ниже

[ Как обновить профиль пользователя в Django

...