1

我在服务器上工作并使用烧瓶作为网络框架,我遇到了这个错误。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)
4

2 回答 2

1

该路由仅指定一个参数:

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

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

@app.route('/<game>/<white>/<black>')
于 2013-06-17T01:19:32.850 回答
0

查看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

white或者只是为和black参数设置默认值:

@app.route('/<game>/<white>/<black>')
@app.route('/<game>')
@login_required
def Challenge(game, white=None, black=None):
    pass
于 2013-06-17T09:28:51.707 回答