Интернет-приложение, загруженное на Heroku, не отображает графику - PullRequest
0 голосов
/ 24 августа 2018

Я загрузил все мое приложение на heroku, но у меня проблема не отображает фотографии.Путь к изображениям определяется следующим образом:

src="{{blog.image.url}}"

Поэтому представление должно быть не только локальным (я так думаю).

После загрузки приложения, на мой взгляд, django.admin также выглядит странно. enter image description here

Любая помощь будет оценена!Как я могу решить эту проблему (чтобы фотографии отображались)?Могу ли я сделать это без повторной загрузки приложения (моя база данных заполнена)?

1 Ответ

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

Если кто-то сталкивается с той же проблемой:

Это обеспечивает поддержку файлов, таких как CSS в Heroku

1.) В файле settings.py просто добавьте следующий код:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Важные ссылки на данном этапе: https://devcenter.heroku.com/articles/django-assets

Обеспечивает отображение мультимедиа

2.) В settings.py добавлю:

#<-------------Elements Amazon S3 Beginning --------->

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'reviews/static'),
] #ok

AWS_ACCESS_KEY_ID = 'YYY'
AWS_SECRET_ACCESS_KEY = 'XXX'
AWS_STORAGE_BUCKET_NAME = 'name'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}

#AWS_LOCATION = 'static' #ok
#STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' #OK
#STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION) # już wystęuje

DEFAULT_FILE_STORAGE = 'winerama.storage_backends.MediaStorage'  # <-- here is where we reference it

#<-------------Elements Amazon S3 END -------------->

2.1) В этой же папке добавьте файл storage_backends.py

#FIle for amazon 3s
from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
    location = 'media'
    file_overwrite = False

* Конечно, мы также должны создать учетную запись amazon 3s.

Важные ссылки на данном этапе: https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html (очень хороший урок, как использовать amazon 3s для медиафайлов и статических файлов)

2.2) Я также использую эти команды при добавлении приложения в Heroku:

heroku config:set AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY
heroku config:set S3_BUCKET_NAME=s'name'

Важные ссылки на данном этапе: https://devcenter.heroku.com/articles/s3

3.) В развертывании это помогло мне https://tutorial -extensions.djangogirls.org / о / Heroku / (Я думаю, что ссылка полезна, но для развертывания всего приложения мне поможет следующий ответ на форуме)

  1. отключить сбор данных при развертывании

    heroku config:set DISABLE_COLLECTSTATIC=1

  2. развернуть

    git push heroku master

  3. запустить миграцию (django 1.10 добавил хотя бы один)

    heroku run python manage.py migrate

  4. запустить коллектор, используя беседку

    heroku run 'bower install --config.interactive=false;grunt prep;python manage.py collectstatic --noinput'

  5. включить Collecstatic для будущих развертываний

    heroku config:unset DISABLE_COLLECTSTATIC

  6. попробуйте самостоятельно (необязательно)

    heroku run python manage.py collectstatic

Автор высказывания tomcounsell Ссылка: Коллектостатическая ошибка при развертывании приложения Django в Heroku

Пожалуйста, прости мой плохой английский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...