Доступ к шаблону Django {{Variable}} из JavaScript

Я попытался получить доступ к переменной шаблона django в html-странице встроенного javascript, он отлично работает. Но если я включаю js, используя <script src="..>, тогда он не работает. Является ли это ограничение, или я делаю что-то неправильно? Я очень ценю вашу помощь.

Ответ 1

Включенный Javascript не обрабатывается процессором шаблонов Django на сервере, так что это не сработает. Если вам нужно передать информацию через шаблон, чтобы включить файлы Javascript, создайте свой шаблон небольшим блоком <script>, в котором объявляется какая-либо глобальная переменная, содержащая эти переменные шаблона. Затем ваш чистый Javascript файл может получить значения, ища глобальный объект, созданный этим <script> из шаблона.

Ответ 2

Правильный ответ. Я часто нахожу этот фильтр полезным для этой ситуации:

@register.filter(name='json')
def _json(obj):
  #remember to make sure the contents are actually safe before you use this filter!
  return safestring.mark_safe(json.dumps(obj)) 

то в теге <script> я могу просто сделать что-то вроде этого:

window.g_details = {{ details|json }};