【问题标题】:TypeError: Challenge() takes exactly 3 arguments (1 given)TypeError: Challenge() 正好需要 3 个参数(给定 1 个)
【发布时间】:2013-06-12 22:02:37
【问题描述】:

我在服务器上工作并使用烧瓶作为网络框架,我遇到了这个错误。 TypeError: Challenge() 正好需要 3 个参数(给定 1 个) 即使我向 Challenge 发送了 3 个参数

代码如下:

def login_required(test):
    @wraps(test)
    def wrap(*args, **kwargs):
        if 'Logged_In' in session:
            return test(*args, **kwargs)
        else:
            flash('You need to login first.')
            return redirect(url_for('login'))
    return wrap

if request.method == 'POST':
        if request.form['button'] == 'Challenge':
            game = session['User'] + ',' + profUser + ',' + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            return redirect(url_for('Challenge', game=game, white=session['User'], black=profUser))

@app.route('/<game>')
@login_required
def Challenge(game, white, black):
    if session['User'] == white:
        side = "white"
    if session['User'] == black:
        side = "black"
    else:
        side = None
    return render_template('game.html', game=game, user=session['User'], side=side)

【问题讨论】:

  • 你的函数需要三个参数。你传入game,但whiteblack 来自哪里?

标签: python flask


【解决方案1】:

路由只指定一个参数:

@app.route('/<game>')

要获得所有三个,您可以执行以下操作

@app.route('/<game>/<white>/<black>')

【讨论】:

  • @dismal 这有帮助吗?
【解决方案2】:

http://flask.pocoo.org/docs/api/#url-route-registrationshttp://werkzeug.pocoo.org/docs/routing/#werkzeug.routing.Rule,可以使用defaults参数:

@app.route('/<game>/<white>/<black>')
@app.route('/<game>', defaults={'white': None, 'black': None})
@login_required
def Challenge(game, white, black):
    pass

或者只是为whiteblack参数设置默认值:

@app.route('/<game>/<white>/<black>')
@app.route('/<game>')
@login_required
def Challenge(game, white=None, black=None):
    pass

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2014-05-06
    • 2014-05-31
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多