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

Iam*_*oon 7 python django

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

**MultiValueDictKeyError**
Run Code Online (Sandbox Code Playgroud)

这是我的views.py

filepath = request.FILES['filepath']
Run Code Online (Sandbox Code Playgroud)

And*_*yko 7

了解如何拨打该错误:

  1. 使用MultiValueDict'sget方法访问文件.

    filepath = request.FILES.get('filepath', False)
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 使用三元运算符的一行分配 :

    filepath = request.FILES['filepath'] if 'filepath' in request.FILES else False
    
    Run Code Online (Sandbox Code Playgroud)
  3. (不推荐)处理MultiValueDictKeyError异常,如下面的代码:

    from django.utils.datastructures import MultiValueDictKeyError
    
    try:
        filepath = request.FILES['filepath']
    except MultiValueDictKeyError:
        filepath = False
    
    Run Code Online (Sandbox Code Playgroud)

更新:正如@Saysa所指出的那样,在filepath你需要选择分配哪个默认值之后应该执行哪些步骤filepath,例如,如果必须处理filepath不存在的情况,FILES最好使用None默认值并检查if filepath is None已提交标识文件路径的条件,如果您需要一些默认值,只需指定它...

在上面的例子中,默认值是False让代码更明显...