我正在使用服务器并使用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)
答案 0 :(得分:1)
路由只指定一个参数:
@app.route('/<game>')
要获得所有这三项,您可以执行类似
的操作@app.route('/<game>/<white>/<black>')
答案 1 :(得分:0)
查看http://flask.pocoo.org/docs/api/#url-route-registrations和http://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
或只设置white
和black
参数的默认值:
@app.route('/<game>/<white>/<black>')
@app.route('/<game>')
@login_required
def Challenge(game, white=None, black=None):
pass