Как передать переменные контекста в файл javascript в Django?
Этот вопрос должен быть очевиден, но я не могу понять.
В шаблоне я связываюсь с js файлом в моем медиа-каталоге. Из этого файла я хотел бы получить доступ к переменной контекста, например {{my_chart}}.
Но синтаксис отличается? Спасибо!
Ответ 1
Я не думаю, что это возможно. Если вы хотите получить доступ к некоторым данным, предоставленным представлением, вам необходимо передать его функции js.
Пример
js файл:
my_cool_js_function(some_param){
// do some cool stuff
}
Вид
// some html code
my_cool_js_function({{param}})
надеюсь, что это поможет:)
Ответ 2
В дополнение к ответу Andrzej Bobak, вы также можете сгенерировать глобальную переменную в Javascript из вашего шаблона. Например, ваш шаблон может генерировать код следующим образом:
<script>
var my_chart = {{ the_chart }};
</script>
Теперь ваш script может ссылаться на my_chart.
Ответ 3
Я бы также добавил, потому что я несколько раз сталкивался с ошибкой, что если переменная python является объектом, она будет вызывать синтаксическую ошибку, если вы не поместите ее в кавычки, другими словами, в свой шаблон,
<script>
var my_var = '{{ python_object|escapejs }}';
</script>
Кроме того, прежде чем помещать этот объект в контекст, лучше сначала его сериализовать в JSON, иначе вам придется выполнять синтаксический анализ строк. Я также обнаружил, что объекты даты должны быть преобразованы в строки до этого шага.