我有一个输入标记,用户必须上传文件。现在,如果用户没有上传任何内容,我会在主视图中执行此操作:
if len(request.FILES) != 0:
data = request.FILES['some_file']
...do some work...
else:
return render(request, 'App/nofile.html' )
如果没有文件,我会将用户带到另一个页面,表示没有上传任何文件,并让他/她返回主页面。
有没有办法我可以检查用户是否没有上传文件而没有转到另一个页面只是在该主页的屏幕中间显示带有消息的图片?
不仅仅是一个串口消息,一张带有消息的图片。
也许javascript就是答案,但我对javascript一无所知。
提前感谢您的帮助。
答案 0 :(得分:6)
有两种方法:
1)如果您在服务器端进行验证,就像您现在所做的那样。看起来你做得对,但如果你处理POST数据,你应该使用重定向而不是渲染:
if len(request.FILES) != 0:
data = request.FILES['some_file']
...do some work...
else:
return redirect('/nofile/' {'foo': bar})
2)如果您想要客户端验证。然后你必须通过javascript阻止默认提交操作并检查文件长度是否等于0.你可以检查this问题或使用这个jQuery代码段:
$('form').submit(function(event){
validated = true;
if ($('#some_file_input').get(0).files.length === 0) {
validated = false;
console.log("No files selected.");
// Or some div with image showing
}
if (validated != true) {
event.preventDefault();
}
});