Javascript可以编译Django的模板吗?

时间:2014-01-30 02:43:49

标签: javascript django templates mustache

我有一个由Django呈现的模板,填充了我在视图中传递的上下文。 但我需要在客户端重新编译此模板,并使用新上下文

经过一番研究后,我终于遇到了MustacheJs,但信息的泄漏给我带来了一些疑问。

我是否只需要编写一个template.mustache,并且Javascript Django都可以编译它吗?

似乎Mustache语法使用了一些符号,如:

{{#items}} {{/items}}

而Django是

{% for item in items %}

他们对我来说看起来很不一样...... 实际上我甚至都不知道Mustache是​​否是我需要的,是否有可能做我想做的事情?


修改

好的,让我解释一下我需要什么。 我有这个模板:

items.html

<form action="item/add/">
    <input type="text" class="item-name" name="name">
    <input type="submit" value="New Item">
</form>
{% if items %}
    <ul class="item-list">
    {% for item in items %}
       <li>
           {{ item.name }}
       </li>
    {% endfor %}
    </ul>
{% endif %}

此模板由视图

编译
def items(request):
    items = Item.objects.all()
    context = {
        'items': items
    }
    return render_to_template('items.html', context)

因此,此模板由服务器端编译和呈现。 现在让我们说用户点击添加了一个新项目,这个函数运行了:

addItem: function addItem() {
    var action = this.$form.attr('action');
    $.post(action, {
        name: this.$itemName.val()
    }, function(response) {
        if (response.success) {
            // LOAD FROM THE SAME TEMPLATE DJANGO DID
            var newItem = loadTemplate('items.html', {
                item: response.item
            });
            this.$itemList.append(newItem);
        }
    });
}

我需要的是这个loadTemplate解析器库,如果存在,我不会,但它确实如此,这就是我想要的!

1 个答案:

答案 0 :(得分:1)

最好在单个文件中使用Django模板或Mustache模板。像django-jstemplate这样的解决方案在支持两者方面都有很大帮助。使用{{ variable }}时会有意义冲突,因为Django和Mustache都会尝试解释它。请注意这一点。

另一个更简单的选择是在verbatim块中包含Mustache模板。 Django模板不会处理这些块。