Я создал шаблон для обновления профилей учетных записей с использованием фрагмента 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, так как я нахожу их более привлекательными и предоставляю больше свободы.