Как передать переменные контекста в файл javascript в Django? - программирование
Подтвердить что ты не робот

Как передать переменные контекста в файл javascript в Django?

Этот вопрос должен быть очевиден, но я не могу понять.

В шаблоне я связываюсь с js файлом в моем медиа-каталоге. Из этого файла я хотел бы получить доступ к переменной контекста, например {{my_chart}}.

Но синтаксис отличается? Спасибо!

4b9b3361

Ответ 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, иначе вам придется выполнять синтаксический анализ строк. Я также обнаружил, что объекты даты должны быть преобразованы в строки до этого шага.

import jsonpickle

context['python_object'] = jsonpickle.encode(python_object)

И, наконец, в JS вы можете затем выполнить итерацию через объект правильно и использовать значения, как вы, вероятно, имели бы в python, выполнив:

var my_var_parsed = jQuery.parseJSON(my_var);