Django Heroku: Нет такого файла или каталога для изображения (изображение в репо) - PullRequest
0 голосов
/ 25 августа 2018

Я использую следующее, чтобы прикрепить картинку (которая передается с репозитория Github) к электронному письму:

twitter_image = MIMEImage(open(get_static('img/twitter.png'), 'rb').read(), _subtype='png')
twitter_image.add_header('Content-ID', '<{}>'.format('twitter.png'))

get_static определяется как:

from django.contrib.staticfiles.finders import find
from django.contrib.staticfiles.templatetags.staticfiles import static

def get_static(path):
    if settings.DEBUG:
        return find(path)
    else:
        return static(path)

Этот же код отлично работает в другом проекте как в разработке, так и в производстве. Но по какой-то причине он не работает в Heroku с этим проектом, когда я запускаю функцию электронной почты в Heroku, она возвращает ошибку вроде:

Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.6/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<console>", line 1, in <module>
  File "/app/notifications/models.py", line 75, in email_users
    twitter_image = MIMEImage(open(get_static('img/twitter.png'), 'rb').read(), _subtype='png')
FileNotFoundError: [Errno 2] No such file or directory: '/static/img/twitter.6a4fa62e22f6.png'

1 Ответ

0 голосов
/ 25 августа 2018

Даниэль Розман отвел меня от правильного направления:

Я не уверен, что вы здесь делаете, но вы, кажется, путаете URL-адреса и пути к файлам.DEBUG - это правда или ложь?- Даниэль Роузман

Это то, что я должен использовать:

from django.contrib.staticfiles.storage import staticfiles_storage
MIMEImage(open(staticfiles_storage.path('img/twitter.png'), 'rb').read(), _subtype='png')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...