Статические файлы Django и require.js. Относительный путь?

Мне интересно, возможно ли это. В настоящее время я обслуживаю спокойный API через Django и Tastypie с конечными точками, используемыми внешним приложением Backbone. Я работаю с Node + Express и знаком с тем, как Express маршрутизирует статические файлы. В экспрессе я мог бы сделать следующее:

app.use(express.compress());
app.use(express.static(__dirname + '/public'));

и получить доступ к моим статическим файлам из общедоступного каталога. Я мог бы получить доступ к /public/css/style.css, я бы просто перешел к localhost:5000/css/style.css. Однако в Django приложение django.contrib.staticfiles использует абсолютные пути. Мои статические файлы находятся в localhost:5000/User/.../css/style.css, а не в версии Express, указанной выше. Это соглашение было бы хорошо, за исключением того факта, что я использую Require.js для модуляции моего приложения Backbone. Независимо от того, как я установил свой baseUrl, мое приложение Backbone не может найти мои модули из-за того, что Django использует абсолютные пути для обслуживания статических файлов. Есть ли способ смягчить эту проблему аналогично реализации Express? По сути, я хочу, чтобы Django перенаправлял мои статические файлы в localhost:5000/static/....

Спасибо за помощь!


person kb11235    schedule 22.08.2014    source источник
comment
Обычно вы должны иметь возможность обслуживать его из /static/**/*, если вы используете тег {% static %}. Не могли бы вы опубликовать свой settings.py?   -  person Henrik Andersson    schedule 22.08.2014


Ответы (1)


Попробуйте добавить эту строку в свой urls.py

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS)

В вашем settings.py у вас может быть что-то вроде этого:

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Теперь вы получите свои статические файлы из base url/static/.... Но будьте осторожны, это не рекомендуется для производства - читать здесь

person AdelaN    schedule 22.08.2014