1

我收到以下错误:

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++) {

但我不知道如何在 Django 中逃脱它,我已经添加了{% autoescape off %}标签,但仍然没有运气。

这是导致错误的代码:

{% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-upload fade">
        <td class="preview"><span class="fade"></span></td>
        <td class="name"><span>{%=file.name%}</span></td>
        <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
        {% if (file.error) { %}
        <td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
        {% } else if (o.files.valid && !i) { %}
        <td>
            <div class="progress progress-success progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="bar" style="width:0%;"></div></div>
        </td>
        <td class="start">{% if (!o.options.autoUpload) { %}
            <button class="btn btn-primary">
                <i class="icon-upload icon-white"></i>
                <span>{%=locale.fileupload.start%}</span>
            </button>
            {% } %}</td>
        {% } else { %}
        <td colspan="2"></td>
        {% } %}
        <td class="cancel">{% if (!i) { %}
            <button class="btn btn-warning">
                <i class="icon-ban-circle icon-white"></i>
                <span>{%=locale.fileupload.cancel%}</span>
            </button>
            {% } %}</td>
    </tr>
    {% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
    {% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-download fade">
        {% if (file.error) { %}
        <td></td>
        <td class="name"><span>{%=file.name%}</span></td>
        <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
        <td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
        {% } else { %}
        <td class="preview">{% if (file.thumbnail_url) { %}
            <a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
            {% } %}</td>
        <td class="name">
            <a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
        </td>
        <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
        <td colspan="2"></td>
        {% } %}
        <td class="delete">
            <button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
                <i class="icon-trash icon-white"></i>
                <span>{%=locale.fileupload.destroy%}</span>
            </button>
            <input type="checkbox" name="delete" value="1">
        </td>
    </tr>
    {% } %}

我正在使用 jQuery File Upload (jquery ui version) 插件。谁能向我解释我该如何解决这个问题?

4

1 回答 1

3

哟它是pythonic,所以它像python中的for循环一样迭代:http: //docs.python.org/tutorial/controlflow.html#for-statements 所以for语句看起来更像{% for file in o.files %}而不是你的C语法for循环。

另请参阅 for 循环的官方 django 文档:https ://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

更仔细地查看其余代码,您的模板代码中似乎有很多奇怪的语法(例如{%=file.name%}should be {% file.name %}{% if (!o.options.autoUpload) { %}should be{% if not o.options.autoUpload %}等)。您可以查看 djangobook 关于模板的章节: http://djangobook。 com/en/2.0/chapter04/

编辑:源代码使用来自JavaScript Templates的模板代码语法,而不是 Django,这似乎是个问题。

于 2012-09-19T21:51:14.113 回答