Как разместить статические файлы администратора проекта Django? - PullRequest
1 голос
/ 30 сентября 2011

Я слышал, что я должен использовать Apache для обслуживания статических файлов в производственной среде. У меня есть некоторые проблемы с пониманием, как я должен это сделать, хотя. Статический URL моего проекта - /static/, а статический путь django.contrib.admin - /static/admin/. Это два совершенно разных каталога на моем сервере, и я с трудом могу это сделать:

Alias /static /path/to/site.com/static
Alias /static/admin /usr/local/.../django/contrib/admin/media

Так как они перекрываются.

Как я должен это сделать? Действительно ли мне нужно скопировать статическую папку contrib admin в мою собственную?

Ответы [ 3 ]

1 голос
/ 02 октября 2011

Распространенным решением является использование / media / для администрирования статических файлов мультимедиа, поэтому оно может быть в settings.py

ADMIN_MEDIA_PREFIX = '/media/'

и в конфигурации виртуального хоста:

Alias /media /path/to/django/contrib/admin/media/
<Location /media>
    SetHandler None
</Location>
1 голос
/ 30 сентября 2011

Во-первых, никто не говорит, что вы должны обслуживать статические файлы администратора по тому же базовому пути, что и другие.Вы можете установить ADMIN_MEDIA_PREFIX так, как вам нравится.

Однако, безусловно, проще всего просто добавить символическую ссылку из вашей статической папки в django / contrib / admin / media.

0 голосов
/ 19 марта 2015

Вы можете изменить порядок записей Alias, и Apache проанализирует его, как и предполагалось:

Alias /static/admin /usr/local/.../django/contrib/admin/media
Alias /static /path/to/site.com/static

Это потому, что когда Apache загружает свою конфигурацию, он сохраняет записи сверху вниз. Поэтому сначала он пытается сопоставить /static/admin, затем, если URI не совпадает, он затем пытается сопоставить /static.

...