遇到无法将文件上传到表单的问题。从我自己的角度来看,这是因为我没有在POST中提交(因为除非您处于POST状态,否则不会保存上载的文件),但我不知道为什么会这样。这是我的代码:
Views.py
def commission(request):
if request.method == "POST":
form = CommissionForm(request.POST)
if form.is_valid():
subject = str(form.cleaned_data.get("name")) + "'s commission request"
message = form.cleaned_data.get("name") + ",\nhas requested a commission, with the following request:\n" + form.cleaned_data.get("request") + "\n Reply to them using their email:\n" + form.cleaned_data['email']
email = form.cleaned_data['email']
print(form.cleaned_data)
attach = request.FILES['reference']
try:
mail = EmailMessage(subject, message, settings.EMAIL_HOST_USER, [email])
if attach != None:
mail.attach(attach.name, attach.read(), attach.content_type)
mail.send()
return redirect("main-commissions-success")
except:
return render(request, "main/commissions.html", {"form": form})
return render(request, "main/commissions.html", {"form": form})
else:
form = CommissionForm()
return render(request, "main/commissions.html", {"form": form})
Commissions.html
<div class="row">
<div class="content-section card w-50 mx-auto my-5">
<div class="card-body">
<form method="POST" action="" class="border border-light m-10" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4 text-center">Request A Painting</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group text-center">
<button class="btn btn-outline-info" type="submit">Send Request</button>
</div>
</form>
</div>
</div>
</div>
并且由于这没有模型关系,因此我不会在这里添加它。希望有人可以指出我犯的任何愚蠢的错误。
我发现了问题所在,因此,对于其他遇到类似问题的人,我忘记了从发布请求中请求文件。所以这:
if request.method == "POST":
form = CommissionForm(request.POST)
就是这样的:
if request.method == "POST":
form = CommissionForm(request.POST, request,FILES)
为了访问您的文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句