【问题标题】:Django interpreter a Javascript loop as a tag / variableDjango 将 Javascript 循环解释为标签/变量
【发布时间】:2016-03-23 17:48:18
【问题描述】:

我尝试在 Django 模板中插入一个 javascript 循环,以便将其注入另一个模板的块中。

不知道有没有可能:

{% extends 'upload_form.html' %}

    #template.html
    {% block FILE_INPUT %}

    {{ block.super|safe }} <script type="text/javascript">
    {% for (var i=0, file; file=o.files[i]; i++) { %}
        <tr class="template-upload fade">
            <!-- ... -->
            <td class="title"><label>Title: <input name="title[]" required></label></td>
            <!-- ... -->
        </tr>
    {% } %}</script>

    {% endblock %}

似乎django解释器循环“JS”作为标签/变量:

TemplateSyntaxError at /index/

'for' statements should use the format 'for x in y': for (var i=0, file; file=o.files[i]; i++) {

Request Method:     POST
Request URL:    http://localhost:8002/index/
Django Version:     1.8.5
Exception Type:     TemplateSyntaxError
Exception Value:    

'for' statements should use the format 'for x in y': for (var i=0, file; file=o.files[i]; i++) {

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py in do_for, line 863
Python Executable:  /usr/bin/python
Python Version:     2.7.6
Python Path:    

有人会有这样的想法,让脚本只由浏览器解释?

非常感谢。

【问题讨论】:

  • 应该有条件。 for(var i = 0; i&lt;10; i++)你不见了i&lt;10
  • 嗯,是的.. 如果您将 for 循环包装在 django 模板语法中,它当然会认为您在使用 django 实用程序。你想达到什么目的?
  • 抱歉,我说错了。我不尝试使用 Python 循环,但我尝试将 javascript 循环插入到 Django 模板中。已编辑主题
  • 但是……为什么?如果你想要一个 JS 循环,使用一个 JS 循环;你为什么把它包装在 Django 标签中?
  • 你说得对。这是愚蠢的。我做了/不能简单地更改javascript文件(/usr/local/lib/python2.7/dist-packages/jfu/等上的静态文件....)。我以为我可以直接从模板中更改它,但我会找到另一个解决方案。感谢您的回复!

标签: javascript django templates tags


【解决方案1】:

这不是模板中 django 循环的正确语法。 应该是这样的:

{% for item in items %}
    (what you want to display)
{% endfor %}

请注意,“items”是您从视图中发送的变量。

然后,尝试为循环使用正确的语法,看看它做了什么并告诉我们。

【讨论】:

  • 抱歉,我说错了。我不尝试使用 Python 循环,但我尝试将 javascript 循环插入到 Django 模板中。已编辑主题。
  • 我不确定,但我认为你不能在 django 循环中执行 js 循环。这就是您尝试对代码执行以下操作的原因:“{% for (var i=0, file; file=o.files[i]; i++) { %}”。您正在使用“{% for”打开一个 django 循环。
  • @Slaan :您必须使用 在 django html 模板中打开一个 javascript 标记。您不能像以前那样将 javascript 插入到 html 中。你应该先阅读 js 文档。
  • 是的,我明白了。我会找到另一个解决方案。感谢您的回复拉斐尔!
【解决方案2】:

{% 逐字记录 %}

{{ js/agular }}

{% endverbatim %}

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 1970-01-01
    • 2012-03-28
    • 2021-10-12
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 2016-05-08
    相关资源
    最近更新 更多