#django #post #django-forms
#django #Публикация #django-forms
Вопрос:
Возникла проблема, из-за которой я не могу загрузить файлы в свою форму. Из того, что я могу собрать самостоятельно, это потому, что я не отправляю в 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>
И поскольку это не имеет отношения к модели, я не собираюсь добавлять ее сюда. Надеюсь, кто-нибудь может помочь указать на любую глупую ошибку, которую я допустил, лол.
Ответ №1:
Я выяснил, что пошло не так, поэтому для кого-либо еще с подобной проблемой я забыл запросить файлы из запроса post. Итак, это:
if request.method == "POST":
form = CommissionForm(request.POST)
подразумевается, что это:
if request.method == "POST":
form = CommissionForm(request.POST, request,FILES)
чтобы получить доступ к вашим файлам.