Проблема с проверкой файла изображения в Django - PullRequest
1 голос
/ 20 апреля 2011

Я из PHP-фона, но мне предоставлен проект для администрирования Django, я перенес его на новый сервер под управлением Django 1.2.5 (Python2.6) и запустил все так же, как и наСтарый.Теперь мне поручено исправлять ошибки старых разработчиков.Пока все хорошо, но я наткнулся на камень преткновения с помощью ImageField.По сути, пользователь может загрузить логотип (это работает).Однако, когда пользователь без логотипа редактирует свои данные, 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 содержит путь, то он возвращается.Как уже упоминалось, это не работает, когда логотип изображения не присутствует, но работает, когда он есть.: - /

Любые указатели были бы очень полезны, так как я искал Google и пока никуда не доберусь.

1 Ответ

3 голосов
/ 20 апреля 2011

Исправление проблемы:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...