在jQuery/Javascript中使用Django模板标签?

joh*_*n2x 24 javascript django jquery django-templates

我可以在Javascript中使用Django的模板标签吗?就像{% form.as_p %}在jQuery中使用动态添加表单一样.

dr *_*bob 28

是的,我经常这样做.你的javascript必须通过django提供,但是如果你只是在html标题中将它作为内联javascript你就可以了.

例如:我使用它在我使用的动态formset上添加前缀.

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

请注意"base.html"我有一个html head,其中加载了jquery库,其中包含{% block extrahead %}{% endblock %}.

  • 最初只是使用普通的 {{template_tags}} 而不将“ ”放在它们周围,但看到了您的解决方案并解决了我的问题。因此,如果您在 JQuery 中使用模板标签,请不要忘记将它们括在单引号中! (2认同)

Jj.*_*Jj. 11

如果这是你的意思,你不能使用你的Javascript代码中的Django模板标签.在渲染模板并将HttpResponse发送到客户端之后,所有Django变量和逻辑都停止存在.在Javascript执行的那一刻,客户端(浏览器)不知道您使用模板生成的变量(例如"表单").

你可以做的是使用Javascript修改HTML页面,使用由Django模板呈现的HTML块.

如果您想在客户端生成HTML,我建议您查看客户端tempalte库(例如,JQuery模板 - 使用{%verbatim%} templatetag).