django 模板在循环中调用 javascript 函数

ary*_*yan 5 javascript django

我在一个 javascript 模板中循环,如:

{% for movie in movies %}
    {{movie.name}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以调用一个返回所需 DOM 元素的 javascript 函数,例如:

{% for movie in movies %}
    <script>
        function get_movie(name) {
            return "<div> class='movie-title'>name</div>
        }
        get_movie({{movie.name}})
    </script>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我只想调用一个 js 函数并进行一些检查并根据...返回一个元素。

val*_*tev 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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,标签内有一些 django 条件<script>,然后在某个函数内使用模板 for 循环呈现一些数组。draw_charts定义在外部某处。在所有这些情况下,我的建议是——尽可能多地移出这样的地方,否则你的代码就会变成旧的 PHP4。