1

私はサーバーで作業していて、フラスコを Web フレームワークとして使用していますが、このエラーに遭遇しました。TypeError: Challenge() は、Challenge に 3 つの引数を送信しても、正確に 3 つの引数 (1 つ指定) を取ります

コードは次のとおりです。

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

ルートは 1 つの引数のみを指定します。

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

3つすべてを取得するには、次のようなことができます

@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 に答える