Я попытался получить доступ к переменной шаблона django в html-странице встроенного javascript, он отлично работает.
Но если я включаю js, используя <script src="..>
, тогда он не работает.
Является ли это ограничение, или я делаю что-то неправильно?
Я очень ценю вашу помощь.
Доступ к шаблону Django {{Variable}} из JavaScript
Ответ 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 }};