如何在Jinja2中中断循环

时间:2019-02-19 07:18:15

标签: javascript django jinja2

您好,用户请告诉我如何break在Jinja 2中进行循环

我在for条件下使用if循环,如果我的if条件是true,我想中断循环

这是我的代码

function refercheck(){
        var input_value = document.getElementById('refer').value;
        {% for i in refer %}
        document.getElementById("valid").innerHTML = '';
        if( input_value == "{{i.refercode}}" ){
            $('#valid').append('Referred By {{i.username}}');
        }

我在input onkeyup="refercheck()"中使用此函数,并且从视图函数发送dict,我的dict键是refer我正在发送所有用户数据,并检查输入是否与此给定的其他用户refercode相同我只有最后一行参照码是相同的,请告诉我如果条件为true或其他解决方案时如何中断循环

3 个答案:

答案 0 :(得分:0)

根据this answer,您可以在for循环语句中添加条件

简单地:

function refercheck(){
    var input_value = document.getElementById('refer').value;
    document.getElementById("valid").innerHTML = '';
    {% for i in refer if input_value == i.refercode %}
        $('#valid').append('Referred By {{i.username}}');
    {% endfor %}


更新:Jinja2不支持中断或继续陈述

您必须使用其他方法来解决此问题

这就是我的想法 我没有尝试代码,但这是个主意。

function refercheck(){
    var input_value = document.getElementById('refer').value;
    refer = {{refer|safe}}

    for (i = 0; i < refer.length; i++) {
        document.getElementById("valid").innerHTML = '';
        if( input_value == i.refercode ){
            $('#valid').append('Referred By '+i.username);
            break;
        }
    }
}

如果i.refercodei.refercode不起作用,请尝试i['refercode']i['refercode']

答案 1 :(得分:0)

循环控件 导入名称:jinja2.ext.loopcontrols

此扩展增加了对break和循环继续的支持。启用后,Jinja提供了这两个与Python完全相同的关键字。

提供了在模板循环中中断和继续的功能,就像标准的break和continue Python关键字一样。

来源:https://jinja.palletsprojects.com/en/2.11.x/extensions/#loop-controls

添加扩展在创建时将添加到Jinja环境。创建环境后,便无法添加其他扩展。要添加扩展,请传递扩展类列表或将路径导入到Environment构造函数的extensions参数。以下示例创建一个加载了i18n扩展名的Jinja环境:

jinja_env =环境(扩展名= ['jinja2.ext.loopcontrols'])

from django.templatetags.static import static
from django.urls import reverse
from jinja2 import Environment


def environment(**options):
    env = Environment(**options, extensions=['jinja2.ext.loopcontrols'])
    env.globals.update({
        'static': static,
        'url': reverse,
    })
    return env

答案 2 :(得分:0)

Jinja2 支持 a asp-page="./Delete" asp-route-id="@item.row_id" class="btn" 和 continue。您只需要安装 break 并激活 jinja 环境。

这是文档链接。 https://jinja.palletsprojects.com/en/2.11.x/api/?highlight=ext%20loopcontrols

我不确定这在 Django 中如何工作,但在 Flask 中,您只需在应用工厂中添加扩展:

ext.loopcontorls