2013-07-30 3 views
0

Je continue d'obtenir cette erreur lorsque j'essaie d'insérer du texte simple dans un db. Je passe de PHP à python, donc je suis ici avec moi.Flask 405 Erreur

Le code est:

from flask import Flask, request, session, g, redirect, url_for, \ 
    abort, render_template, flash 

from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/pythontest' 
    db = SQLAlchemy(app) 
    app = Flask(__name__) 

@app.route('/justadded/') 
def justadded(): 
    cur = g.db.execute('select TerminalError, TerminalSolution from Submissions order by id desc') 
    entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()] 
    return render_template('view_all.html', entries=entries) 

@app.route('/new', methods= "POST") 
def newsolution(): 
    if not request.method == 'POST': 
     abort(401) 
    g.db.execute('INSERT INTO Submissions (TerminalError, TerminalSolution, VALUES (?, ?)' 
       [request.form['TerminalError'], request.form['TerminalSolution']]) 
    g.db.commit() 
    flash('Succesful') 
    return redirect(url_for('justadded')) 




@app.route('/') 
def index(): 
    return render_template('index.html') 

@app.route('/viewall/') 
def viewall(): 
    return render_template('view_all.html') 

if __name__ == '__main__': 
    app.run() 

Et le code html pour le formulaire est:

<form action="/new" method="POST"> 
     <input name="TerminalError" id="searchbar" type="text"   placeholder="Paste Terminal error here..."> 
     <input name="TerminalSolution" id="searchbar" type="text" placeholder="Paste Terminal solution here..."> 
     <button type="submit" id="search" class="btn btn-primary">Contribute</button> 
     </form> 

Répondre

5

L'erreur n'a rien à voir avec l'insertion de données dans la base de données, il est l'argument methods de votre /new itinéraire.

Au lieu de cela:

@app.route('/new', methods= "POST") 

faire ceci:

@app.route('/new', methods= ["POST"]) 

La liste des méthodes valides doit être donné comme un tableau.