2013-08-02 3 views
2

Я принципиально не понимаю, как работает manage.py collectstatic. Идея, которую я имел, была у вас есть на путиКак собирать статическую работу?

project/app/static/app/base.css 

и запустить collectstatic и копируют их в/staticfiles/папку, которые затем могут быть доступны {{STATIC_URL}}. Я пробовал это и, похоже, не нашел base.css.

Вот мои переменные для справки:

basepath = os.path.split(os.path.abspath(__file__))[0]  
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(basepath, 'staticfiles') 
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}base.css" /> 

Что все приводит к ошибке 404 при попытке получить таблицу стилей:

"GET /base.css HTTP/1.1" 404 2255 
+0

- это таблица стилей, доступная в '/ static/base.css'? – dm03514

+0

Кажется. Когда я собираю static, он сообщает мне, что один файл скопирован, но куда? Вот как выглядит мой каталог: http://i.imgur.com/6HmlQZO.png – Nanor

ответ

2

Это кажется collectstatic копирует его на штраф.

Я думаю, вам просто нужно использовать {% static "base.css" %} тег шаблона вместо того, чтобы пытаться получить доступ к переменному STATIC_URL

я не думаю, что STATIC_URL доступен в рамках шаблона.

вы могли получить доступ к он делает что-то вроде

from django.conf import settings 

settings.STATIC_URL 

но {% static %} тег делает это для вас. Кажется, версия django важна. 1.5 looks like использует тег {% static %}, но ранние версии выглядят так, как будто они поддерживают STATIC_URL, если у вас есть RequestContext.

+0

Работал. Кажется, я где-то читал, что это крайне неэффективно для развертывания на производстве? Или я думаю о другом? – Nanor

+1

@Nanor, вид, ваш веб-сервер, т.е. apache, nginx и т. д. должны обслуживать ваш статический контент, а не django, если вы используете apache, вы можете использовать 'Alias' для этого. – dm03514

+0

. Если он получает файлы из Amazon S3, это похоже на то, что у него есть веб-сервер? Вот как я это сделал. – Nanor

Смежные вопросы