在Django中检查图像文件的问题



我来自PHP背景,但已经给了一个Django项目来管理,我把它带到一个运行Django 1.2.5 (Python2.6)的新服务器上,并让它像在旧服务器上一样运行。我现在的任务是修复旧开发人员的错误。到目前为止一切顺利,但我遇到了ImageField的绊脚石。基本上,用户可以上传图像徽标(这是有效的)。但是,当没有logo的用户编辑详细信息时,Django会抛出一个错误:

ValueError: The 'org_logo' attribute has no file associated with it.

导致错误的代码片段是:

user = request.user
org = user.organisation
if not checkLogoFile(org):
    org.org_logo = ''
    org.save()

函数checkLogoFile看起来像这样:

def checkLogoFile(org):
from os.path import exists
path = org.org_logo.path
if path:
    file_name = path.split('/')[-1]
    return exists(settings.MEDIA_ROOT+'logo/'+file_name)
return False

我理解的方式是,如果checkLogoFile返回false,那么org_logo值将是一个零长度字符串。如果org_logo包含路径,则返回该路径。如前所述,当图像徽标存在时,这将失败,但当一个存在时,它会工作。: -/

任何指示都将非常有帮助,因为我已经搜索了谷歌,到目前为止还没有找到任何地方。

修复问题:
def checkLogoFile(org):
   from os.path import exists
   path = org.org_logo.path if org.org_logo else None
   if path:
       file_name = path.split('/')[-1]
       return exists(settings.MEDIA_ROOT+'logo/'+file_name)
   return False

但无论如何,我真的不明白为什么要这样把检查复杂化。为什么不直接

def checkLogoFile(org):
   from os.path import exists
   path = org.org_logo.path if org.org_logo else None
   return path and exists(path)

相关内容

  • 没有找到相关文章