2016-09-17 1 views
0

Hallo Ich versuche, eine einfache Umfrage-App zu erstellen, wo, wenn Sie das Formular ausfüllen, bewegt es Sie auf eine Seite, wo Sie die Ergebnisse Ihrer Umfrage anzeigen können.Formvalidierung Verknüpfung zu anderen Seite in Kolben

Das aktuelle Problem, das ich habe, ist dies "Die Methode ist nicht für die angeforderte URL erlaubt."

Sever.py:

from flask import Flask, flash, session, render_template, request, redirect, url_for 
app = Flask(__name__) 
app.secret_key = 'very secret' 


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


@app.route('/process', methods=['POST']) 
def process(): 
    if len(request.form['name']) < 1 or len(request.form['comments']) < 1: 
     flash("you need to fill out the name and comments") 
    else: 
     return redirect(url_for('createUser')) 
    return redirect('/') 


@app.route('/results', methods=['POST']) 
def createUser(): 
    return render_template('results.html', name=request.form['name'], 
     location=request.form['location'], favLang=request.form['favLang'], 
    comments=request.form['comments']) 
    return redirect('/') 

app.run(debug=True) 

Die if/else-Anweisung funktioniert weil ich meine Flash, wenn ich einen Namen oder Kommentar nicht eingeben. Ich kann den anderen einfach nicht dazu bringen, richtig zur app.route ('/ results') zu gehen. Ich habe auch versucht es mit diesem ohne Erfolg:

@app.route('/process', methods=['POST']) 
def process(): 
    if len(request.form['name']) < 1 or len(request.form['comments']) < 1: 
     flash("you need to fill out the name and comments") 
    else: 
     return redirect('/results') 
    return redirect('/') 
+0

Erstellen Sie einfach den Benutzer, es ist nicht notwendig, zu einer anderen Ansicht/Anfrage umzuleiten, Sie haben bereits alle Daten in der ersten Anfrage. – davidism

+0

Ihr ein Genie. Danke für die Hilfe. (Tunnel Vision wissen Sie) – BatsAuto

Antwort

0

dank der Kommentar von @davidism Ich habe gerade den Benutzer in der vaidation Form und dann auf der Ergebnisseite verlinkt sind.

hier ist sie:

@app.route('/process', methods=['POST']) 
def process(): 
    if len(request.form['name']) < 1 or len(request.form['comments']) < 1: 
     flash("you need to fill out the name and comments") 
    else: 
     return render_template('results.html', name=request.form['name'], 
      location=request.form['location'], favLang=request.form['favLang'], 
      comments=request.form['comments']) 
    return redirect('/') 

Ich weiß nicht, wie „richtig“ ist, aber ich arbeitet certianly die Art, wie ich es wollte.

Verwandte Themen