Как я могу передать мои переменные контекста в файл JavaScript в Django? - PullRequest
23 голосов
/ 31 декабря 2011

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

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

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

Ответы [ 3 ]

22 голосов
/ 31 декабря 2011

Не думаю, что это возможно.Если вы хотите получить доступ к некоторым данным, предоставляемым представлением, вы должны передать их в функцию js.

Пример

js file:

my_cool_js_function(some_param){
    // do some cool stuff
}

view

// some html code

my_cool_js_function({{param}})

надеюсь, это поможет:)

19 голосов
/ 31 декабря 2011

В дополнение к ответу Анджея Бобака вы также можете сгенерировать глобальную переменную в Javascript из вашего шаблона.Например, ваш шаблон может генерировать код, подобный следующему:

<script>
   var my_chart = {{ the_chart }};
</script>

Ваш скрипт может затем ссылаться на my_chart.

6 голосов
/ 08 апреля 2016

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