Django/Python - 检查用户是否上传文件 - 如果没有,显示一张图片。

4

我有一个输入标签,用户必须上传文件。现在,如果用户没有上传任何东西,我会在主视图中执行以下操作:

if len(request.FILES) != 0:

    data = request.FILES['some_file']
    ...do some work...
else:
    return render(request, 'App/nofile.html' )

如果没有文件上传,我会将用户带到另一个页面,告诉他/她没有上传文件,并让他/她返回主页面。
有没有一种方法可以检查用户是否没有上传文件,而不是去到另一个页面,只在主页面中间显示一张图片和信息?
不仅仅是字符串信息,而是带有信息的图片。
也许JavaScript是答案,但我对JavaScript一无所知。
提前感谢您的任何帮助。

2
是的,您可以通过编写一些 HTML 使用图像标签来显示一个图片而不仅仅是字符串消息,从而将其放置在您想要的位置。 - Daniel Roseman
@DanielRoseman 好的,我想知道如何在Django模板上的验证中显示该图片。谢谢。 - NachoMiguel
1
@DanielRoseman 我知道那是不必要的讽刺,只是想用大写字母来表达我的观点,而你是专业人士,所以你知道这个问题的答案。请帮助一个非专业人士。 - NachoMiguel
1个回答

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。您可以查看问题或使用以下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();
    }
});

现在我无法使用那段JavaScript代码,也许我没有以正确的方式将输入分配给函数。这是我的输入:<input id="some_file_input" type="file" name="some_file" class="filestyle" data-buttonName="btn-primary" data-icon="false"> 你的代码说:if ($('#some_file_input')----->这是ID吗? - NachoMiguel
搞定了,非常有帮助,不像其他评论那样。 - NachoMiguel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接