Подтвердить что ты не робот

Использовать теги шаблонов Django в jQuery/Javascript?

Можно ли использовать теги шаблонов Django внутри Javascript? Подобно использованию {% form.as_p %} в jQuery для динамического добавления форм на страницу.

4b9b3361

Ответ 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