Wie zum senden von Daten von Kolben-zu-html-Vorlage
Ich habe eine kleine Anwendung, wo die Eingabe wird von dem Benutzer und basierend auf den Daten angezeigt wird, zurück auf die html. Ich habe zum senden von Daten von Kolben für die Anzeige in html aber nicht in der Lage, einen Weg zu finden, es zu tun. Es gibt keinen Fehler, den ich gestoßen.
[AKTUALISIERT]:
Python-Skript :
from flask import Flask, render_template, request
import random
app = Flask(__name__, template_folder='templates')
@app.route('/', methods=['GET','POST'])
def samplefunction():
if request.method == 'GET':
return render_template('new.html')
if request.mthod == 'POST':
greetIn = ['hey', 'hi', 'hey there', 'hi there', 'hello', 'hola', 'yoo']
byeIn = ['bye', 'see you later', 'catch you later', 'toodles']
nameOut = ['my name is Fatty!!', 'Fatty is my name', 'you can call me Fatty', 'I go by the name of Fatty']
greetOut = ['hey there!', 'hi!', 'hi there!', 'hey!']
byeOut = ['bye bye', 'bye. see you later']
human1 = request.form['human']
if human1 in greetIn:
bot = random.choice(greetOut)
return render_template('new.html', bot=bot)
else:
bot = 'Sorry..no idea!!!'
return render_template('new.html', bot=bot)
if __name__ == "__main__":
app.run(debug=True)
HTML-code :
<html>
<head>
<title>BOT</title>
<script>
var bot = {{ bot }}
</script>
</head>
<body>
<h1>Hello, type something to begin!</h1>
<form method='post'>
Human: <input type='text' name='human'><br>
Bot: {{ bot }}<br>
<input type="submit" name="action">
</form>
</body>
</html>
Jede mögliche Hilfe würde geschätzt.
Danke!
- Das sieht mir Recht sein. Was ist es-rendering anstelle von
{{ bot }}
? bot = random.choice(greetout)
ist, dass das, was es tatsächlich aussieht, wie in deinem code? Sie nie deklariert eine variable mit einem Kleinbuchstabeno
imout
. Obwohl ich hoffe, dass würde einen Fehler auslösen...- Es sollte funktionieren, wenn Sie ändern die variable
greetOut
wie oben dargelegt - Ohh..gar nicht.. Aber es funktioniert immer noch nicht. die Seite nur aktualisiert, ohne schriftlich etwas anstelle von {{bot}}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem
Ihre Funktion
samplefunction()
immer machtnew.html
ohne eine variable enthalten, da von der ersten return-Anweisung.Fix
Müssen Sie
if request.method == 'GET':
undif request.method == 'POST':
, und dann ist dein code funktioniert. Und ändern Sie den Variablennamen als die andere Antwort von @Harrison schlägt vor:bot = random.choice(greetOut)
nichtbot = random.choice(greetout)
Aktualisierten Code
@app.route('/', methods=['GET','POST'])
Die definition vondef samplefunction()
werden muss, genau so, wie ich oben geschrieben habe, und Ihr code wird tun, was Sie wollen. Die bot-Antwort geschrieben auf Ihrer html-Seite an der Stelle der variable{{ bot }}
in der Zeile:Bot: {{ bot }}<br>
.human
Textfeld und die Eingabe muss mit einem der strings aus:greetIn
- Liste ist, richtig? Ich nahm an, Sie würde wissen, dass, da es ist dein code. Sie können nicht eingebenmonkey brain
und erwarten, um eine Roboter-Antwort... Auch Dasif __name__ == "__main__":
Aussage ist abhängig von Ihrer Umgebung, und das sollte so konfiguriert werden, wie Sie es wünschen. Ich nehme an, Sie wissen, die, da Sie zumindest in der Lage gewesen, um zu machen dienew.html
Seite, ohne dass der bot die Antwort..... Bitte geben Sie mir ein update oder poste deine Fehlermeldungen, und ich werde Ihnen helfen, es herauszufinden./bot --- /new1.py /templates -- new.html
ich haben kopiert Ihr den code korrekt gemacht und nur eine einzige änderung inif __name__ == "__main__": app.run(debug=True)
und dann in der cmd nach dem Gang zur /bot Ordner ich die folgenden Befehle ausführen:set FLASK_APP=new1.py
undflask run
ich bekomme keine Fehlermeldung oder so, wird die Seite nur neu geladen, wenn der Knopf klicken, ohne die variable.greetIn = ['hey', 'hi', 'hey there', 'hi there', 'hello', 'hola', 'yoo']
wie hey oder Hallo genau in der Reihenfolge zu erhalten, eine bot-Antwort. Können Sie auch führen Sie Ihre app mit dem Befehl$ python new1.py
oder$ python3 new1.py
aber beide Ihre Lösung und das merkte man gut arbeiten.python new1.py
oderpython3 new1.py
aber noch ist es nur das rendering der Seite ohne irgendeine Reaktion.greetOut = ['hey there!', 'hi!', 'hi there!', 'hey!']
<-- GRÜßEN0utbot = random.choice(greetout)
<-- GRÜßENoutAndere als das Template sieht gut aus. Wenn Sie korrigieren Ihre Kapitalisierung sollte es funktionieren.
Darüber hinaus nicht verpflichtend, aber Sie könnte genauso gut verdichten, um Ihre Kolben-Importe in 1 Zeile wie diese:
from flask import Flask, render_template, request