烧瓶中的url_for:BuildError - 无法为端点构建url

时间:2017-09-19 07:32:11

标签: python html flask jinja2

这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="static/test.css">
</head>
<body>
    {% for i in range(result['data']|length) %}
        <div id="wrapper">
        {% for key, value in result['data'][i].iteritems() %}
            <div id="first">{{ key }}</div>
            <div id="second"><a href="{{ url_for('employees_name', employee_id=value)}}">{{ value }}</a></div>
        {% endfor %}
        </div>
        &nbsp;
    {% endfor %}
</body>
</html>

当我将“value”变量传递给“employee_id”时,我收到错误:

  

BuildError:无法为端点'employees_name'构建url。你是否   忘记指定值['employee_id']?

奇怪的是,当我将“key”变量传递给“employee_id”时,一切都还好,但我需要传递“value”变量。可能导致什么问题?谢谢!

2 个答案:

答案 0 :(得分:1)

虽然您可以通过对employee_id的值进行硬编码来测试代码,并测试问题是否存在,但我认为您的问题是{{ value }}为空。

由于我们没有employees_name视图的代码,我建议你这样调试:

  • 检查href为空的链接,以便查看{{value}}是什么,是否要传递给视图

  • 检查循环在result['data'][i]上的回报是什么,如果有任何结果

  • 我会检查result['data']是否{% if result %}开始

但是,再次对employee_idhref的值进行硬编码,以查看问题是否存在{{value}}不存在或导致问题的其他问题。

例如,如果value@app.route中的变量类型相同,则可能会出现此错误。

答案 1 :(得分:0)

我改变了我的剧本,现在看起来像这样。它有效。

<!DOCTYPE html>
    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="static/test.css">
    </head>
    <body>
        {% for i in range(result['data']|length) %}
            <div id="wrapper">
            {% for key, value in result['data'][i].iteritems() %}
                <div id="first">{{ key }}</div>
                <div id="second">{{ value }}</div>
            {% endfor %}
            <div><a href="{{ url_for('employees_name', employee_id=result['data'][i]['EmployeeId'])}}">More</a></div>
            </div>
            &nbsp;
        {% endfor %}
    </body>
    </html>
相关问题