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

时间:2011-05-15 14:12:31

标签: javascript jquery django django-templates

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

3 个答案:

答案 0 :(得分:27)

是的,我经常这样做。你的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 %}

答案 1 :(得分:11)

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

您可以使用Javascript修改您的HTML页面,使用由Django模板呈现的HTML块。

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

答案 2 :(得分:0)

如果你想在渲染的javascript中使用变量我(这是我的意见),那么认为这是一个坏主意。但如果您只想为视图,媒体和静态文件生成URL,我会做很多事情。

看看这个github:jscssmin