2014-02-09 3 views
-1

Предотвращает прохождение по логическому logout для индексации. Я использовал тот же самый формат redirect в другой части кода, который работал.ТипError: redirect() получил неожиданный аргумент ключевого слова 'logout'

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    error = None 
    if request.method == 'POST': 
    if request.form['username'] != 'user' or \ 
    request.form['password'] != 'pass': 
     error = 'Invalid credentials' 
    else: 
     session['username'] = request.form['username'] 
     flash('You are already logged in.') 
     logout = False 
     return redirect(url_for('index'), logout=logout) #problem line 
    return render_template('login.html', error=error) 
+0

Это не имеет смысла. Вы передаете логическое (False) для «перенаправления». Почему, и что вы ожидаете от этого? –

+1

Посмотрите на [исходный код 'redirect'] (https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/utils.py#L338) - он не принимает аргумент ключевого слова logout' (и, вероятно, никогда не было). Эта «другая часть кода», в которой вы использовали аргумент ключевого слова «logout», вероятно, только «работал», потому что эта строка никогда не выполнялась. –

ответ

0

Вы, вероятно, хотите, чтобы передать logout значение url_for():

redirect(url_for('index', logout=logout)) 

Однако, в этом случае было бы хорошей идеей, чтобы преобразовать его в целое первый - в противном случае вы в конечном итоге с буква False или True в URL.

+0

Я сомневаюсь, что это из-за моего бриллианта. Но если бы я увидел наши два ответа без информации об авторских правах, я бы поднял голову, потому что это более вероятно (передача логического значения в «код» имеет нулевой смысл). – ThiefMaster

Смежные вопросы