Чтобы проверить, содержит ли request.FILES
ключ, вы выполняете не проверку с помощью:
if not <s>request.FILES['image'] == ''</s>:
# …
Вы проверяете, находится ли элемент в QueryDict
с помощью:
if <b>'image' in</b> request.FILES:
# …
Обратите внимание, что для публикации файлов и данных в <form>
enctype="…"
должно быть установлено multipart/form-data
:
<form method="post" <b>enctype="multipart/form-data"</b>>
…
</form>
Кроме того, сделайте не так много ветки, вы можете создать представление, которое будет выглядеть так:
def profile(request):
if request.method == 'POST':
user = request.user
if 'first_name' in request.POST:
user.first_name = request.POST['first_name']
if 'last_name' in request.POST:
user.last_name = request.POST['last_name']
if 'image' in request.FILES:
profile = user.profile
profile.image = request.FILES['image']
profile.save()
user.save()
return redirect('profile')
else:
# …
Кроме того, вы можете использовать Form
[Django -doc] или даже ModelForm
[Django -doc] , чтобы сделать рендеринг формы, проверку ввода и обновление записи более удобным.