以下是我的问题,我正在使用默认的Django模型创建用户,创建用户会自动创建与此用户相关联的个人资料,以及出生日期和个人资料照片字段。默认情况下,个人资料照片已分配,当我要更改它时,它不会更新,尽管其余字段都已保存,但我一直在寻找解决方案,但没有一个对我有帮助。这里的代码:
forms.py
class ProfileForm(forms.ModelForm):
birth_date = forms.DateField(label='Fecha de nacimiento')
photo = forms.ImageField(label="Foto de perfil")
class Meta:
model = Profile
fields = ['birth_date', 'photo']
观看次数,py
def editProfile(request):
if request.method == 'POST':
form = UEditF(request.POST, instance=request.user)
extended_profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
if form.is_valid() and extended_profile_form.is_valid():
form.save()
extended_profile_form.save()
return redirect('/')
else:
form = UEditF(instance=request.user)
extended_profile_form = ProfileForm(instance=request.user.profile)
context = {
'form': form,
'extended_profile_form':extended_profile_form
}
return render(request, 'registration/edit_profile.html', context)
edit_profile.html
{% extends "base_generic.html" %}
{% block content %}
{% load crispy_forms_tags %}
<div class="container-fluid">
<div class="row justify-content-center">
<h1
style="padding-top: 0.5em; font-size: 4em; font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;">
Editar el perfil del usuario {{ user.username }}</h1>
<div class="container" >
<div class="row justify-content-center">
<div class="col-6" style="background-color: #ffffff; padding: 2em; border-radius: 5%;">
<form method="POST" action="" novalidate>
{% csrf_token %}
{{ form|crispy}}
{{ extended_profile_form|crispy}}
<div class="text-center">
<button class="btn btn-lg btn-primary text-center" type="submit">Actualizar Perfil</button>
<p class="mt-5 mb-3 text-muted">© Read Praxis Project</p>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
在代码级别,它不会显示错误,但是会出现在控制台上:
Not Found: /polls/edit/media/IMG_20200123_192312.jpg
[06/Jul/2020 02:41:17] "GET /polls/edit/media/IMG_20200123_192312.jpg HTTP/1.1" 404 2846
我真的不明白这个问题,我是使用Django的新手,如果有人可以帮助我,那就太好了,我将非常感谢。
答案 0 :(得分:1)
并在表单标签中添加enctype="multipart/form-data"
:
<form method="POST" enctype="multipart/form-data" action="" novalidate>