【问题标题】:Python: TypeError: redirect() got an unexpected keyword argument 'error'Python:TypeError:redirect() 得到了一个意外的关键字参数“错误”
【发布时间】:2017-01-18 11:20:48
【问题描述】:

我正在使用 Flask,我试图在其中一个表单部分尚未填写时显示错误。当我测试这个(填写所有表单部分)时,它给了我错误:“TypeError:redirect()得到了一个意外的关键字参数'错误'”。我做错了什么?

烧瓶代码:

@app.route('/crudcourse', methods = ['POST'])
def crudcourse():
db = get_db()
error = None

button = request.form['submitcourse']

coursename = request.form['coursename']
description = request.form['description']

if coursename != None or description != None:
    error = 'Vul alle velden in aub'
else:
    if button == 'Toevoegen':
        db.execute('insert into courses (coursename, description) 
        values(?, ?)', coursename, description)
        db.commit()
        flash('Gegevens sucessvol toegevoegd')

    elif button == 'Updaten':
        db.execute('update courses set coursename=?, description=? where
        coursename=? or description=?',
        coursename, description, coursename, description)
        db.commit()
        flash('Gegevens sucessvol geupdate')

    elif button == 'Verwijderen':
        db.execute('delete from courses where coursename=? or
        description=?', coursename, description)
        db.commit()
        flash('Gegevens sucessvol verwijderd')  

return redirect('/intranet/richtingen.html', error=error)

HTML 代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Home</title>
    <link rel="stylesheet" type="text/css" href="templates/style.css">
</head>

<body>

{% if error %}
<p class=error><strong>Error:</strong> {{ error }}
{% endif %}

{% for message in get_flashed_messages() %}
<div class=flash>{{ message }}</div>
{% endfor %}

    <div id="courses">
        <form action="/crudcourse" method="post">
            <p>Naam<input type="text" name="coursename"></p>
            <p>Beschrijving
                <textarea name="description" cols="50" rows="4">
                </textarea></p>

            <input type="submit" name="submitcourse" value="Toevoegen">
            </input>
            <input type="submit" name="submitcourse" value="Updaten">
            </input>
            <input type="submit" name="submitcourse" value="Verwijderen">
            </input>
        </form>
    </div>

    </body>
</html>

【问题讨论】:

  • 把图片中的代码粘贴到这里,对我们来说更易读。
  • 嗯,错误信息还不够清楚吗? redirect 对象不知道如何处理关键字参数error。请参阅 API 文档:flask.pocoo.org/docs/0.12/api/#flask.redirect
  • @Arman 我把代码贴在上面了

标签: python flask


【解决方案1】:

我猜您所指的重定向方法是烧瓶库flask.redirect 提供的方法。可以这样导入:

from flask import redirect

如果这是真的,这个重定向方法不接受错误参数,因为错误消息是TypeError: redirect() got an unexpected keyword argument 'error'

您想要做的似乎是将任何潜在错误传递给/intranet/richtingen.html 页面,如果是这样的话 - 我建议您在 URL 的查询字符串中这样做,如下所示:

return redirect('/intranet/richtingen.html?error=%s' % error)

【讨论】:

  • 这就是我想做的。但我想我自己找到了解决方案,我使用的是重定向而不是 render_template。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2016-12-08
  • 2020-06-28
  • 1970-01-01
相关资源
最近更新 更多