#javascript #html #django #dropzone.js #dropzone
Вопрос:
Я пытаюсь создать форму, в которой я использую Dropzone, но мне нужно добавить еще один ввод. Проблема в том, что с сервера, когда я пытаюсь получить доступ к другому входу, сервер не может его найти.
Это html-код, который у меня есть.
{% load static %}
{% block content %}
<div class="pt-3 pb-2 mb-3 border-bottom">
<form action="#" method="POST" class="dropzone dz" id="dropzone" name="dropzone" >
{% csrf_token %}
<div class="fallback" >
<input name="file" type="file" multiple />
<input type='text' name='fullname' value='what ever you need to get in backend'>
</div>
</form>
<button type="button" class="btn btn-outline-success" id='uploadfiles' value='Submit' >Submit</button>
<span data-feather="save"></span>
Submit
</button>-->
</div>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/jq-3.3.1/jszip-2.5.0/dt-1.10.20/b-1.6.1/b-html5-1.6.1/b-print-1.6.1/datatables.min.css"/>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/jq-3.3.1/jszip-2.5.0/dt-1.10.20/b-1.6.1/b-html5-1.6.1/b-print-1.6.1/datatables.min.js"></script>
<script type = "text/javascript">
$('#dropzone').submit(function() {
console.log('Hello');
});
Dropzone.options.dropzone =
{
autoProcessQueue: false,
maxFiles: 1,
acceptedFiles: ".xlsx",
addRemoveLinks: true,
init: function() {
var submitButton = document.querySelector("#uploadfiles")
myDropzone = this; // closure
submitButton.addEventListener("click", function() {
var a = document.getElementById('pymt_date').value
var CurrentDate = new Date();
GivenDate = new Date(a);
if (a == null || a == ""){
alert("Please Enter Payment Date");
return false;
}
else if (GivenDate < CurrentDate) {
alert("Payment Date Must be greater than today");
return false;
}
else {
console.log(document.getElementById('pymt_date').value);
myDropzone.processQueue();
setTimeout(function() {
location.reload();
}, 5000);
}
// Tell Dropzone to process all queued files.
});
}
};
</script>
Не могли бы вы, пожалуйста, помочь и посоветовать, в чем проблема. Когда я пытаюсь распечатать запрос.ОПУБЛИКУЙТЕ, чтобы получить значение входного имени=»полное имя», все, что я получаю, — это токен csrf, и все.
Комментарии:
1.
<form enctype="multipart/form-data" ...>
.2. Файлы , кстати, доступны через
request.FILES
, нетrequest.POST
.3. @WillemVanOnsem Я не имею в виду файл. Файл, который я подтверждаю, что у меня есть к нему доступ. Мне нужно получить значение входного имени = полное имя. Что я не могу получить к нему доступ по запросу. Публикация
4. Я не вижу идентификатора
dateform
, прикрепленного к форме, которая содержит<input>
тег для полного имени. Может быть, обновите ссылку и проверьте.5. @SaranshSingh идентификатор и имя формы-dropzone .. форма данных-это не та форма.. проблема в том, что мне нужно обработать файл и ввести полное имя в одном запросе ..
Ответ №1:
во-первых, ваша кнопка «Отправить» отсутствует в форме. Imo должен быть внутри, и тип кнопки должен быть «отправить», а не «кнопка». Другое дело, что неясно, где вы хотите получить доступ к request.POST. В представлении Джанго? Итак, в форме сделайте: enctype=»составные/данные формы», как сказал Виллем Ван Онсем. И еще раз поместите кнопку «Отправить» внутри формы. Таким образом, вы сможете обработать запрос на публикацию в представлении. И просмотрите свой код, у вас есть несколько ошибок — дважды закрываете , отправляете и т. Д.