如何在Django中检查空的request.FILE

时间:2016-01-22 07:14:49

标签: python django

即使没有上传图片,也要提交表单。但我得到了错误

**MultiValueDictKeyError**

这是我的views.py

filepath = request.FILES['filepath']

3 个答案:

答案 0 :(得分:6)

了解如何拨打该错误:

  1. 使用MultiValueDict's get方法访问文件。

    filepath = request.FILES.get('filepath', False)
    

    如果FILES中没有filepath,则filepath变量将为False。

  2. 使用ternary运算符分配一行:

    filepath = request.FILES['filepath'] if 'filepath' in request.FILES else False
    
  3. Not reccomended )处理MultiValueDictKeyError异常,如下面的代码:

    from django.utils.datastructures import MultiValueDictKeyError
    
    try:
        filepath = request.FILES['filepath']
    except MultiValueDictKeyError:
        filepath = False
    
  4. <强>更新:  正如@Saysa所指出的那样,在获得filepath之后您应该执行哪些步骤,您需要选择将哪个默认值分配给filepath,例如,如果您必须处理案例当filepath完全不在FILES时,最好使用None作为默认值,并检查条件为if filepath is None以确定已提交的文件路径,如果您需要有一些默认值,只需分配它......

    在上面的示例中,默认值为False,以使代码更明显...

答案 1 :(得分:1)

request.FILES.get('filepath')如何,如果没有图像,那么filepath应为None

答案 2 :(得分:1)

仅作为发布的附加内容。如果要检查给定的文件路径,则必须将类型更改为布尔值,如下所示:

if bool(request.FILES.get('filepath', False)) == True: