Django {% static 'path'%} в файле javascript
В моем script.js:
pic.src = "/static/photos/1.jpg"; // This works
pic2.src = "{% static 'photos/1.jpg' %}" // Does not work
Почему в мире это происходит? Поскольку в моем home.html работает {% static 'path'%}:
{% load staticfiles %}
<script src="{% static 'script.js' %}"></script> // This works
И это {% load staticfiles%} или {% load static%}? Оба работают для меня, загружается script.js.
Ответы
Ответ 1
Поскольку вы используете язык шаблонов django, вы можете ТОЛЬКО делать это в своем шаблоне между тегами <script>
. Другими словами, если вы хотите использовать переменную javascript pic2.src
в внешнем script, тогда вам нужно объявить ее между тегами <script>
, как это показано
<script>
var pic2.src = "{% static "photos/1.jpg" %}"
</script>
И затем вы можете получить доступ к нему во внешних сценариях, которые вы можете загрузить следующим образом:
<script type="text/javascript" src="{% static "js/my_external_script.js" %}"></script>
Относительно вашего вопроса относительно load static
и load staticfiles
существует небольшое различие. Оба выступают в качестве столяра для STATIC_URL
в вашем settings.py
и фактическом пути к самому файлу, поэтому оба должны работать для вашего дела. Подробнее см. здесь и здесь.
Ответ 2
Если вам понадобится много статического (или медиа) url в ваших файлах .js
, это может быть более удобным:
<script>
var static_url = "{% get_static_prefix %}";
var media_url = "{% get_media_prefix %}";
</script>
Затем оба url свободно доступны во всех файлах javascript.
Ответ 3
Вы можете назначить путь в своем шаблоне, а затем использовать его в своем файле javascript.
Шаблон:
<script>
var url = "{% static 'photos/1.jpg' %}";
</script>
JavaScript:
pic2.src = url