С Django, как правильно настроить пути к административному и статическому контенту? - PullRequest
2 голосов
/ 05 февраля 2009

У меня настроен сайт Django, который использует админ-панель Django с префиксом /media/, а также статический контент сайта в каталоге с именем /static/. Медиа-контент администратора, конечно же, находится в пакете Django, и статический контент сайта хранится вместе с кодом Python для сайта.

В настоящее время мой public_html просто содержит символические ссылки с соответствующими именами на каталоги, которые фактически содержат статический контент, следующим образом:

~/public_html/
    .htaccess
    media -> $HOME/usr/lib/python2.4/site-packages/django/contrib/admin/media/
    site.fcgi
    site -> $HOME/mysite/public/static/

И вот правила перезаписи, которые я использую в моем .htaccess файле:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ site.fcgi/$1 [QSA,L]

Однако использование символических ссылок таким образом выглядит как ... хак, и кажется, что я мог бы использовать правила перезаписи в .htaccess, чтобы избежать использования символических ссылок. (Я также хочу со временем добавить файл robots.txt и файл favicon, не добавляя и не поддерживая кучу символических ссылок.) Это хорошая идея, и если да, то как мне это сделать?


Для дальнейшего использования я в конечном итоге сделал нечто похожее на то, как обычно создаются проекты Rails. Мой проект Django содержит каталог public, который включает, помимо прочего, статический контент сайта, скрипт FastCGI и файл .htaccess, поэтому он выглядит примерно так:

~/
    django/
        public/
            .htaccess
            content/
            favicon.ico
            media@ -> /symlink/to/django/admin/media/
            site.fcgi
            static/

А затем, ~/public_html просто символически связывается с ~/django/public. Все отлично работает, поэтому я счастлив.

Ответы [ 3 ]

4 голосов
/ 16 апреля 2009

Симлинки не являются "взломом" - они являются законными и полезными объектами в файловой системе. Они не более или менее хрупкие, чем любой тип файлов, они уменьшают избыточность и уменьшают количество необходимых вам настроек Apache. Я не совсем понимаю, почему вы хотите их избежать. Решение symlink гораздо более элегантно, чем написание правил Apache, IMO.

3 голосов
/ 09 февраля 2009

Я просто использую

Alias /media /home/akaihola/usr/lib/python2.4/site-packages/django/contrib/admin/media/
Alias /static /home/akaihola/mysite/public/static/

но я делаю это в реальном файле конфигурации Apache вместо .htaccess, и я использую mod_wsgi, хотя я не знаю, имеет ли это значение.

1 голос
/ 05 февраля 2009

Я не символическую ссылку ни для ...

Я использую переписки веб-сервера, чтобы указать /media/(.*) непосредственно на мою директорию мультимедиа и /admin\-media/(.*) непосредственно на мою среду администратора Я должен подчеркнуть, что эти изменения происходят до того, как они переписываются на django fastcgi rewrite. Я бы дал вам свой код, но я использую Cherokee вместо Apache.

Я не понимаю, почему вам нужно иметь "физическое" представление в корне вашего сайта ...

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