Расположение медиа-файлов администратора Django в Google App Engine - PullRequest
3 голосов
/ 25 марта 2012

Я использую GoogleAppEngine (GAE) 1.6.3 с Python 2.7 и Django 1.3, имея:

libraries:
- name: django
  version: "1.3"

в моем app.yaml.Следующее должно обслуживать административные медиа-файлы по URL /static/admin:

- url: /static/admin
  static_dir: django/contrib/admin/media
  expiration: '0'

Но я получаю 404 с для таких административных медиа (CSS и т. Д.).Я использую правильное местоположение для медиа-файла администратора Django?

Ответы [ 5 ]

3 голосов
/ 25 марта 2012

Лучший способ сделать это - скопировать или поместить символическую ссылку в каталог media в каталог вашего приложения в локальных файлах, чтобы он загружался вместе с файлами вашего приложения. Тогда ваш app.yaml может ссылаться на относительный путь в каталоге приложения.

Существует $PYTHON_LIB подстановка переменных, которую вы можете использовать в app.yaml путях, но похоже, что Django не ниже $PYTHON_LIB в действующей версии Python 2.7 времени выполнения.

1 голос
/ 24 сентября 2013

Я попробовал collectstatic от Филиппа Келлера, но у меня нет этой команды.

Итак, добавьте этот обработчик в app.yaml:

- url: /static/admin
  static_dir: django/contrib/admin/static/admin
  expiration: '0'

, затем в settings.py, удалите ADMIN_MEDIA_PREFIX (удалено в django 1.4) и добавьте:

STATIC_URL = '/static/'

и у вас есть рабочий css.

1 голос
/ 28 декабря 2012

При добавлении этого к app.yaml

handlers:
- url: /static/admin
  static_dir: static/admin
  expiration: '0'

я смог обработать CSS-файлы следующим образом:

Добавление этого к settings.py:

BASE_DIR = os.path.abspath(os.path.dirname(__file__)) + os.sep
STATIC_ROOT = BASE_DIR + 'static'

И затем запустить

python manage.py collectstatic

Медиа-файлы администратора отображаются правильно локально, а также на appspot.com.Последняя команда копирует мультимедийные файлы в каталог static/.Так что на самом деле делает то, что предложил Дэн Сандерсон, но более автоматизированным способом.

0 голосов
/ 22 ноября 2016

Мне кажется, что следующее хорошо работает.

app.yaml

handlers:
- url: /static
  static_dir: staticfiles

настройки

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Выполнить python manage.py collectstatic.Теперь под вашей папкой staticfiles должна быть создана папка.

0 голосов
/ 03 апреля 2012

возможно статический файл, на который ссылается переменная $ PYTHON_LIB при развертывании ??

файл app.yaml

application: hello
version: 1
runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: django
  version: "1.3"

handlers:
- url: /admin/media
  static_dir: $PYTHON_LIB/lib/django_1_3/django/contrib/admin/media

builtins:
- django_wsgi: on

локальный журнал:

INFO 2012-04-03 02: 06: 19,200 dev_appserver.py:2884] "GET /admin/media/css/base.css HTTP / 1.1" 200 -

INFO 2012-04-03 02:06: 19,207 dev_appserver.py:2884] "GET /admin/media/css/dashboard.css HTTP / 1.1" 200 -

INFO 2012-04-03 02: 06: 19,242 dev_appserver.py:2884] "GET /admin/media/img/admin/default-bg.gif HTTP / 1.1 "200 -

приложение журнала ошибок развертывания:

2012-04-02 19: 17: 32.775 /admin/media/css/dashboard.css 404 6ms 0kb

    • [02 / Apr / 2012: 19: 17: 32 -0700] "GET /admin / media / css / dashboard.css HTTP / 1.1 "404

Статический файл, на который указывает обработчик, не найден: $ PYTHON_LIB / lib / django_1_3 / django / contrib / admin /СМИ / CSS / dashboard.css

...