我在提交带有 Jquery/ajax POST 的图像字段的表单(Django 表单)时遇到了一些问题。我在图像字段上返回“必填字段”验证错误..
我一直在尝试附加 formData 的不同解决方案,但到目前为止没有结果。我在正确的轨道上吗?请指出我正确的方向。谢谢!
更新:我可以将 imagefield 设置为 required=false 并且不会收到验证错误,但我希望该字段是必需的,并且似乎表单仍然没有提交图像..
基本功能如下所示:
$(function() {
$('#imageupload').on('click', function() {
$('#dialog-modal').load('upload/ #myform');
$('#dialog-modal').dialog({
height: 550,
width: 280,
modal: true,
buttons: {
Send: function() {
var dialog = $(this),
form = $('#myform'),
data = form.serialize();
$('.off').remove();
$.ajax({
url: 'upload/',
data: data,
type: 'post',
success: function(response) {
res = $.parseJSON(response);
if (res['status'] == 'OK') {
alert('Thank you!');
dialog.dialog('close');
}
else if (res['status'] == 'bad') {
alert('Please try again!');
delete res['status']
var errors = res;
$.each(errors, function(key, value) {
var err = $('<span></span>', {
'class': 'off',
'text': value
}),
br = $('<br></br>', {
'class': 'off',
}),
input = $('#id_'+key).parent();
br.appendTo(input);
err.appendTo(input);
err.css('color', 'red').css('font-size', '10px');
});
}
}
});
}
}
});
});
})
表单看起来像这样,它在一个子 html 中,它被加载到一个 jquery 对话框/模态框中:
<form method="post" id='myform' enctype="multipart/form-data">
{% csrf_token %}
<h1> Upload </h1>
<p><label for="name">Name:</label></p>
<div class="fieldWrapper">
{{ form.name }}
</div>
<br>
<p><label for="type">Type:</label></p>
<div class="fieldWrapper">
{{ form.type }}
</div>
<br>
<p><label for="description">Description:</label></p>
<div class="fieldWrapper">
{{ form.description }}
</div>
<br>
<p><label for="picture">Picture:</label></p>
<div class="fieldWrapper">
{{ form.picture }}
</div>
</form>