【问题标题】:TypeError: url_for() takes exactly 1 argument (2 given)TypeError: url_for() 只需要 1 个参数(给定 2 个)
【发布时间】:2018-08-20 17:58:59
【问题描述】:

使用 jinja2 时,我的 html 模板出现错误。这是我得到的错误: TypeError: url_for() 只需要 1 个参数(给定 2 个)。该错误发生在 endif 语句之后的 2 个 td 标记中。我尝试在按钮内使用 onclick,这是我知道如何添加 url_for 标记的另一种方式。

这是我使用的模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title> 
</head>
<body>
    <table align="center" id="comic_list">
        {% for value in bobby %}
        <tr>
            <td> {{ value[0]|safe }} </td>
            <td> {{ value[1]|safe }} </td>
            <td> {{ value[2]|safe }} </td>
            <td> {{ value[3]|safe }} </td>
            <td> {{ value[4]|safe }} </td>
            <td> {{ value[6]|safe }} </td>
            <td> {{ value[7]|safe }} </td>
        </tr>
        {% endfor %}
        <tr>
            <td><a href="{{url_for('test', next)}}"><button type="submit" value="Next">Next</button></a></td>
            <td><a href="{{url_for('test', prev)}}"><button type="submit" value="Prev">Previous</button></a></td>
        </tr>
    </table>
</body>
<footer>
        <p align="right">Date/Time: <span id="datetime"></span></p>
        <script>
        var dt = new Date();
        document.getElementById("datetime").innerHTML = dt.toLocaleString();
        </script>
    </footer>
</html>

这里是使用的python代码:

@app.route('/test')
def test():

    current_page = request.args.get('page', 1, type=int)
    comic_dic = {}
    per_page = 10
    bob = create_bob('Book', 'Yes')
    end = (current_page * per_page) + 1
    if end > len(bob):
        end = len(bob)
    start = ((current_page - 1) * per_page) + 1

    bob[1:] = sorted(bob[1:], key=lambda v: (v.publisher, v.sort, v.character, v.publication_date, int(v.volume)))

    bobby = []
    bobby.append(bob[0:1])
    for result in bob[start:end]:
        bobby.append(result)
    next = 'page=' + str(current_page + 1)
    prev = 'page=' + str(current_page - 1)
    comic_dic['bob'] = bobby
    comic_dic['next'] = current_page + 1
    comic_dic['prev'] = current_page - 1

    return render_template('yes.html', bobby=bobby, next=next, prev=prev)

谢谢扎克

【问题讨论】:

    标签: html python-2.7 flask jinja2


    【解决方案1】:

    这里是 url_for() 的文档: http://flask.pocoo.org/docs/0.12/api/#flask.url_for

    您的问题是 url_for 只接受一个参数(如错误所述)。然而,它确实需要额外的关键字参数。例如,如果您想以当前的方式将 next 和 prev 变量传回,您只需将代码更改为如下所示:

    <tr>
      <td><a href="{{url_for('test', page=next)}}"><button type="submit" value="Next">Next</button></a></td>
      <td><a href="{{url_for('test', page=prev)}}"><button type="submit" value="Prev">Previous</button></a></td>
    </tr>
    

    这将生成如下所示的链接:

        <tr>
            <td><a href="example.com/test?page=3"><button type="submit" value="Next">Next</button></a></td>
            <td><a href="example.com/test?page=1"><button type="submit" value="Prev">Previous</button></a></td>
        </tr>
    

    当然,我假设您显示的第一个模板将传递 next 和 prev 变量,它们分别是 3 和 1。

    【讨论】:

    • 是的,谢谢。现在是时候解决下一个难题了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多