TypeError:Challenge()只需3个参数(给定1个)

时间:2013-06-17 01:11:54

标签: python flask

我正在使用服务器并使用flask作为web框架,我遇到了这个错误。 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)

2 个答案:

答案 0 :(得分:1)

路由只指定一个参数:

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

要获得所有这三项,您可以执行类似

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

答案 1 :(得分:0)

查看http://flask.pocoo.org/docs/api/#url-route-registrationshttp://werkzeug.pocoo.org/docs/routing/#werkzeug.routing.Rule,您可以使用defaults paramer:

@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