Python Django图像格式是';不要保存图像
我有一个表格,其中包括上传个人资料图片。我可以在Python Django图像格式是';不要保存图像,python,html,django,django-forms,Python,Html,Django,Django Forms,我有一个表格,其中包括上传个人资料图片。我可以在/admin/界面上传图像并正确显示它们,但我无法让我的模型表单保存图像 以下是我所拥有的: models.py forms.py cand_reg.html(模板) views.py 当我删除有问题的行时,错误就消失了 def add_candidate(request): if request.method == 'POST': form = AddCandidateForm(request.POST, request.
/admin/
界面上传图像并正确显示它们,但我无法让我的模型表单
保存图像
以下是我所拥有的:
models.py
forms.py
cand_reg.html(模板)
views.py
当我删除有问题的行时,错误就消失了
def add_candidate(request):
if request.method == 'POST':
form = AddCandidateForm(request.POST, request.FILES)
if form.is_valid():
candidate = form.save(commit=False)
# candidate = request.FILES['ProfilePicture']
candidate.UserID = request.user
candidate.save()
return redirect('/home/')
else:
form = AddCandidateForm()
return render(request, 'cand_reg.html', {
"form": form
})
但是,这实际上并没有保存图像,因此当我尝试在单独的模板中渲染它时,会出现一个错误
有人能帮我理解为什么图像没有上传吗
提前感谢:)
ProfilePicture
属性,而不是实例本身(candidate=request.FILES['ProfilePicture']
)
改为:
candidate = form.save(commit=False)
candidate.ProfilePicture = request.FILES['ProfilePicture']
candidate.UserID = request.user
candidate.save()
。当表单包含文件输入(
)时,其编码方式必须与仅包含文本时使用的编码方式不同。更多如果右键单击并检查{{form.ProfilePicture}}
,您将看到这实际上是一个文件输入ProfilePicture
,UserID
等)。使用snake\u case代替(profile\u picture
,user\u id
等)我做了你建议的更改,但仍然得到相同的错误。另外,您建议的额外更改是否有特定的原因?在您按照建议更改
enctype
后,仍然会出现相同的错误?啊,是的,就是这样。非常感谢你。是什么改变使它起作用的?更新了我的答案以反映您的问题。此外,您应尽量与类
附件中的蛇形字母保持一致。请帮自己一个忙,读一读。它不仅对你有帮助,对其他蟒蛇也有帮助;)
{% block content %}
<h1>Register as a candidate</h1>
<form method="POST" class="post-form">
{% csrf_token %}
<h2>Select an election:</h2><br>
{{form.ElectionID}}<br>
<h2>Enter your bio:</h2><br>
{{form.Bio}}<br>
<h2>Upload a profile picture:</h2><br>
{{form.ProfilePicture}}<br>
<button type="submit">Register</button>
</form>
{% endblock %}
def add_candidate(request):
if request.method == 'POST':
form = AddCandidateForm(request.POST, request.FILES)
if form.is_valid():
candidate = form.save(commit=False)
candidate = request.FILES['ProfilePicture']
candidate.UserID = request.user
candidate.save()
return redirect('/home/')
else:
form = AddCandidateForm()
return render(request, 'cand_reg.html', {
"form": form
})
def add_candidate(request):
if request.method == 'POST':
form = AddCandidateForm(request.POST, request.FILES)
if form.is_valid():
candidate = form.save(commit=False)
# candidate = request.FILES['ProfilePicture']
candidate.UserID = request.user
candidate.save()
return redirect('/home/')
else:
form = AddCandidateForm()
return render(request, 'cand_reg.html', {
"form": form
})
candidate = form.save(commit=False)
candidate.ProfilePicture = request.FILES['ProfilePicture']
candidate.UserID = request.user
candidate.save()