Форма Django не отправляется в POST

#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)
  

чтобы получить доступ к вашим файлам.