2017-01-18 6 views
0

Я использую Flask, и я пытаюсь сделать сообщение об ошибке, когда одна из частей формы не была заполнена. Когда я тестирую это (заполнение всех частей формы), это дает мне ошибку: «TypeError: redirect() получил неожиданный аргумент ключевого слова« error ». Что я делаю не так?Python: TypeError: redirect() получил неожиданный аргумент ключевого слова 'error'

код Колба:

@app.route('/crudcourse', methods = ['POST']) 
def crudcourse(): 
db = get_db() 
error = None 

button = request.form['submitcourse'] 

coursename = request.form['coursename'] 
description = request.form['description'] 

if coursename != None or description != None: 
    error = 'Vul alle velden in aub' 
else: 
    if button == 'Toevoegen': 
     db.execute('insert into courses (coursename, description) 
     values(?, ?)', coursename, description) 
     db.commit() 
     flash('Gegevens sucessvol toegevoegd') 

    elif button == 'Updaten': 
     db.execute('update courses set coursename=?, description=? where 
     coursename=? or description=?', 
     coursename, description, coursename, description) 
     db.commit() 
     flash('Gegevens sucessvol geupdate') 

    elif button == 'Verwijderen': 
     db.execute('delete from courses where coursename=? or 
     description=?', coursename, description) 
     db.commit() 
     flash('Gegevens sucessvol verwijderd') 

return redirect('/intranet/richtingen.html', error=error) 

HTML код:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Home</title> 
    <link rel="stylesheet" type="text/css" href="templates/style.css"> 
</head> 

<body> 

{% if error %} 
<p class=error><strong>Error:</strong> {{ error }} 
{% endif %} 

{% for message in get_flashed_messages() %} 
<div class=flash>{{ message }}</div> 
{% endfor %} 

    <div id="courses"> 
     <form action="/crudcourse" method="post"> 
      <p>Naam<input type="text" name="coursename"></p> 
      <p>Beschrijving 
       <textarea name="description" cols="50" rows="4"> 
       </textarea></p> 

      <input type="submit" name="submitcourse" value="Toevoegen"> 
      </input> 
      <input type="submit" name="submitcourse" value="Updaten"> 
      </input> 
      <input type="submit" name="submitcourse" value="Verwijderen"> 
      </input> 
     </form> 
    </div> 

    </body> 
</html> 
+2

Paste код из изображения здесь, он будет более читабельным для нас. – Arman

+0

Ну, разве сообщение об ошибке недостаточно ясно? Объект 'redirect' не знает, что делать с аргументом ключевого слова' error'. См. Документацию по API: http://flask.pocoo.org/docs/0.12/api/#flask.redirect – Mikk

+0

@Arman Я вставил код на него –

ответ

0

Я предполагаю, что метод перенаправления вы имеете в виду тот, который предоставляется из библиотеки опоки, flask.redirect. Это может быть импортирован как это:

from flask import redirect 

Если это так, то этот метод перенаправления не принимает аргумент ошибки, как сообщение об ошибке говорит TypeError: redirect() got an unexpected keyword argument 'error'.

Похоже, что вы хотите сделать, это передать любые возможные ошибки в /intranet/richtingen.html страницы, если это так - я бы рекомендовал делать это в строку запроса в URL вместо, например:

return redirect('/intranet/richtingen.html?error=%s' % error) 
+0

Вот что я хочу сделать. Но я думаю, что нашел решение самостоятельно, я использовал redirect вместо render_template. Спасибо вам за помощь –

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