我正在尝试将对象保存到我的数据库,但它会抛出MultiValueDictKeyError错误.
问题在于表单,is_private由复选框表示.如果未选中该复选框,则显然不会传递任何内容.这是错误被丢失的地方.
我如何正确处理这个异常,并抓住它?
这条线是
is_private = request.POST['is_private']
Run Code Online (Sandbox Code Playgroud) 我一直试图上传一个简单的文本文件几个小时,但我似乎仍然无法让它工作.
我一直收到无效的表格,说我错过了"file_source".
为什么"file_source"没有发布?
我也让它实际发送"file_source",但它仍然说它丢失了.应该为Django FileFiled提供什么类型的元素?
Django表格:
class FileUploadForm(forms.Form):
file_source = forms.FileField()
Run Code Online (Sandbox Code Playgroud)
Django模板(渲染表格):
<form action="/upload/" method="post" id="file-upload-form" enctype="multipart/form-data"> {% csrf_token %}
{{ form }}
<button type="submit" class="btn btn-primary" id='upload-btn'>Upload</button>
</form>
Run Code Online (Sandbox Code Playgroud)
JQuery/Ajax上传:
function uploadFile() {
$.ajax({
data: $(this).serialize(),
type: $(this).attr('method'),
url: $(this).attr('action')
});
return false;
}
$(function() {
$('#file-upload-form').submit(uploadFile);
});
Run Code Online (Sandbox Code Playgroud)
Django View哪收到POST:
def upload_view(request):
if request.is_ajax():
form = FileUploadForm(request.POST)
if form.is_valid():
print 'valid form'
else:
print 'invalid form'
print form.errors
return HttpResponseRedirect('/ingest/')
Run Code Online (Sandbox Code Playgroud) 从应用程序(iOS android等)发布而不是Web表单.
class someImage(models.Model):
image = models.ImageField(upload_to= settings.SHARE_IMAGE_UPLOAD_PATH)
@csrf_exempt
def saveImage(request):
Run Code Online (Sandbox Code Playgroud)
如何写视图?它在邮件请求中接收图像.我发现的每件事都与表格相关(服务器新手)
我的django项目中的文件上传有问题.所以问题是:如何通过jquery ajax将文件传递给django视图?
这一刻我有
脚本:
<script type='text/javascript'>
$(document).ready(function() {
var csrf_token = $('input[name="csrfmiddlewaretoken"]').val();
$('#upload').click(function() {
$.ajax({
csrfmiddlewaretoken: csrf_token,
type: 'POST',
url : '../ajax/upload_file/',
enctype: "multipart/form-data",
data : {
'file': $('#file').val()
},
success: function(data) {
console.log(data)
}
})
})
})
</script>
Run Code Online (Sandbox Code Playgroud)
模板:
<form method="" action="" name='upload_form' id='upload_form' >{% csrf_token %}
<input type='file' name='file' id='file' />
<input type='button' value='Upload' id='upload'/>
</form>
Run Code Online (Sandbox Code Playgroud)
并查看:
@csrf_exempt
@xhr_to_json
def verifyFile(request):
if request.is_ajax():
file = request.FILES['file']
return {'message': file}
else:
return HttpResponseForbidden()
Run Code Online (Sandbox Code Playgroud)
现在我得到了
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud) django ×4
ajax ×2
jquery ×2
python ×2
django-forms ×1
django-views ×1
exception ×1
file-upload ×1
imagefield ×1