Использование шаблонных переменных в Django с django-компрессором - PullRequest
3 голосов
/ 15 февраля 2012

Проблема в том, что {{ STATIC_URL }} не загружается должным образом, когда на него ссылаются в файле coffeescript, который django-compressor компилирует в файл .js.

В моем шаблоне django у меня есть

//this loads fine
{{ STATIC_URL }}
{% load compress %}
{% compress js %}

//STATIC_URL in here does not load
<script type="text/coffeescript" charset="utf-8" src="/static/stuff.coffee" />  

{% endcompress %}

В stuff.coffee У меня

$('#test').prepend '<img src="{{ STATIC_URL }}images/image.png" />'

Тогда отображаемый HTML в браузере будет

/static/
<img id="theImg" src="{{ STATIC_URL }}images/image.png">

Таким образом, мой вопрос: как заставить Джанго распознать {{ STATIC_URL }} в файле coffeescript? Большое спасибо за любую помощь!

1 Ответ

3 голосов
/ 15 февраля 2012

Ваши [.js|.coffee] файлы не являются шаблонами django и не будут оцениваться. Либо вам нужно предварительно обработать ваши скрипты с помощью рендерера шаблонов django, либо вы установите переменную в html-шаблоне и назначите ее свойству окна javascript. E.g.:

В вашем шаблоне django:

window.staticUrl = "{{ STATIC_URL }}";

{% load compress %}
{% compress js %}

//STATIC_URL in here does not load
<script type="text/coffeescript" charset="utf-8" src="/static/stuff.coffee" />  

{% endcompress %}

В вашем stuff.coffee:

$('#test').prepend "<img src="#{window.staticUrl}images/image.png" />"
...