Django模板如何在循环中调用JavaScript函数

7

我正在一个JavaScript模板中进行循环,类似于:

{% for movie in movies %}
    {{movie.name}}
{% endfor %}

有没有一种方法可以调用一个返回所需DOM元素的JavaScript函数,例如:
{% for movie in movies %}
    <script>
        function get_movie(name) {
            return "<div> class='movie-title'>name</div>
        }
        get_movie({{movie.name}})
    </script>
{% endfor %}

我只想调用一个JavaScript函数,进行一些检查并返回相应的元素。

请发布一个MCVE。你正在使用的这段代码完全可以不用JavaScript来完成。 - e4c5
是的,完全可以不用 JavaScript 完成,但是我需要在 JavaScript 代码块内进行一些处理,因此我正在寻找这样的方法。 - varad
@e4c5 MCVE 是什么? - varad
@aryan http://stackoverflow.com/help/mcve - itzMEonTV
1个回答

3
当然可以。你最好将<script>标签移出Django循环,可能还要移出函数。以下是我代码中在Django管理页面上绘制图表的示例,仅供参考:
<script type="text/javascript">
    {% if cl.show_chart %}
        (function($) {
            $(document).ready(function() {
                var data = [
                    {% for sold in cl.get_sold_info %}
                        {
                            fullname: '{{ sold.fullname }}',
                            date: {{ sold.date|date:"U" }}000,
                            partner: '{{ sold.partner }}',
                            price: {{ sold.price }}
                        },
                    {% endfor %} ];
                draw_charts(data, $);
            });
        })(someNamespace.jQuery);
    {% endif %}
</script>

正如您所看到的,<script>标签中包含一些Django条件语句,在某个函数内使用模板for循环来渲染某些数组。draw_charts在外部定义。

我的建议是将尽可能多的内容移出这样的地方,否则您的代码将变成老式的PHP4代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接