Можно ли использовать теги шаблонов Django внутри Javascript? Подобно использованию {% form.as_p %}
в jQuery для динамического добавления форм на страницу.
Использовать теги шаблонов Django в jQuery/Javascript?
Ответ 1
Да, я делаю это часто. Ваш javascript должен быть отправлен через django, но если вы просто используете его в заголовке html как встроенный javascript, все будет в порядке.
Например: я использую это, чтобы поместить префикс в динамический набор форм, который я использую.
{% extends "base.html" %}
{% block extrahead %}
<script type="text/javascript">
$(document).ready(function() {
{# Append fields for dynamic formset to work#}
{% for fset, cap, _, tid in study_formsets.fset_cap_tid %}
$(function() {
$('.form_container_{{ tid }}').formset({
prefix: '{{ fset.prefix }}',
formCssClass: '{{ tid }}',
extraClasses: ['myrow1', 'myrow2']
});
});
{% endfor %}
});
</script>
{% endblock %}
Примечание в "base.html" У меня есть html head
, где загружаются библиотеки jquery, содержащие {% block extrahead %}{% endblock %}
.
Ответ 2
Вы не можете использовать теги шаблона Django из своего кода Javascript, если это то, что вы имеете в виду. Все переменные Django и логические остановки останавливаются после того, как шаблон был визуализирован, и HttpResponse был отправлен клиенту. В тот момент, когда выполняется Javascript, у клиента (браузера) нет понятия переменные, которые вы отображали в шаблоне (например, "форма" ).
Что вы можете сделать, так это изменить Javascript на своей HTML-странице, используя куски HTML, которые были отображены вашим шаблоном Django.
Если вы хотите сгенерировать HTML на стороне клиента, я бы рекомендовал посмотреть на библиотеки tempalte на стороне клиента (например, JQuery Templates - использовать те с {% verbatim%} templatetag).
Ответ 3
Если вы хотите использовать переменные внутри вашего рендеринга javascript я (что мой opnion), подумайте, что это плохая идея. Но если вы хотите создать URL-адрес для своих представлений, медиафайлов и статических файлов, я делаю это очень много.
Взгляните на этот github: jscssmin