2015-09-19 8 views
6

Ok, also bin ich neu in Kolben, und möchte wissen, welche Objekte oder Werkzeuge ich verwenden würde, um dies zu tun. Ich möchte ein Formular erstellen, in dem der Benutzer Text eingibt, auf eine Übergabeschaltfläche klickt, dann wird der übergebene Text als Python-Zeichenfolge gebunden, und es wird eine Funktion ausgeführt, und dieser Text wird dann wieder im Web bereitgestellt Seite, die sie mit dem Rückgabewert der Funktion anzeigen, die sie durchlaufen hat. Hier ein Beispiel:Wie baue ich einen Get-Form-Beitrag in der Flasche

HTML-Formular:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
<form action = "/" method="get"> 
    <input type="text" name="mail" size="25"> 
    <input type="submit" value="Submit"> 
</form> 

<textarea cols="50" rows="4" name="result"></textarea> 

</body> 
</html> 

Dann hier ist das, was ich glaube, sollte die URL-Funktion sein aussehen sollte

@app.route('/', methods=['GET', 'POST']) 
    def form(): 
     if request.method == 'GET': 
      input_text = request.data #step to bind form text to python string 
       new_text = textfunction(input_text) #running the function on the retrieved test. 
       return (new_text) # no idea if this is write, but returns text after modification. 

Was ist der beste Weg wäre, um dies einzurichten ? Wäre es richtig, eine Variable als Wert für den Eingabe-HTML einzugeben? Brauchen Sie Hilfe zu diesem Thema.

Antwort

8

Grundsätzlich möchten Sie einen Block in Ihrer Vorlage haben, der nur enthalten ist, wenn für die Variable ein Wert festgelegt wurde. Siehe das folgende Beispiel

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
<form action = "/" method="get"> 
    <input type="text" name="mail" size="25"> 
    <input type="submit" value="Submit"> 
</form> 

{% if result %} 
<textarea cols="50" rows="4" name="result">{{ result }}</textarea> 
{% endif %} 

</body> 
</html> 

und dann in Ihrem Python-Code

@app.route('/', methods=['GET', 'POST']) 
def index(result=None): 
    if request.args.get('mail', None): 
     result = process_text(request.args['mail']) 
    return render_template('index.html', result=result) 


def process_text(text): 
    return "FOO" + text 
+0

Thank you so much! eine kurze Frage, wofür steht der None-Slot in request.args.get ('mail', None)? –

+0

request.args.get ('mail', None) gibt den Wert von 'mail' im dict zurück, wenn es gesetzt ist, andernfalls gibt None zurück, was falsch ist. request.args ist ein dict der Abfrageparameter in einer get-Anfrage –

Verwandte Themen