Übergeben von Wert aus einem Dropdown-Menü zu einer Flaschenvorlage

Ich habe ein Problem, das ein Element aus einem HTML-Dropdown-Menü zu einer SQL-Abfrage ausgibt.

Ich bin nicht ganz sicher, welches Konzept aus meinem Code fehlt, um diese Arbeit zu machen. Die meisten Beispiele, die ich gefunden habe, sind in PHP und ich bin nicht sicher, wie man es in Python übersetzen kann.

Hier ist das Szenario. Ich bin mit Flask und Sqlite und ich versuche, lassen Sie den Benutzer wählen Sie ein Element aus einem HTML-Dropdown-Menü. Der aus dem Dropdown-Menü ausgewählte Element wird in einer SQL-Abfrage verwendet, um Informationen aus einer Datenbank abzurufen und diese Ergebnisse dann auf einer neuen Seite anzuzeigen.

Ein Beispiel wählt der Benutzer "Red" aus einem Dropdown, der 3 Optionen (Rot, Blau, Grün) hat und auf eine Schaltfläche "Senden" klickt. "Red" wird an eine SQL-Abfrage in meiner app.py-Datei übergeben, die alle Daten aus Zeilen abruft, in denen color = "Red" ist. Diese abgerufenen Daten werden dann auf /results.html angezeigt.

Ich glaube, mein Problem ist, dass ich nicht korrekt einen Wert auf die Elemente in meinem Dropdown-Menü und dann übergeben diesen Wert an meinen Python-Code, der die SQL-Abfrage ausgeführt wird. Das ist meine Annahme, wie das funktionieren sollte, aber ich könnte hier etwas größeres fehlen.

Ich habe viele Bits von HTML ausprobiert, um diese Arbeit zu machen, aber ich bin nicht einmal sicher, dass dort, wo mein Problem auftritt. Wenn ich "Submit" trage, nehme ich die neue Seite, aber nichts aus der Datenbank wird angezeigt

Hier ist mein Code, für meine 2 Ansichten ('/' & 'results.html') und meinen Python Code:

@app.route('/results.html', methods=['GET','POST']) def results(): g.db = connect_db() cur = g.db.execute("SELECT * FROM all_items WHERE name = '{}'".format('Red')) posts = [dict(item=row[0], name=row[1]) for row in cur.fetchall()] g.db.close() return render_template('results.html', posts=posts) 

Hier ist die Ansicht, wo die Dropdown-Menüs vorhanden sind

 <select name="Item_1"> <option value="Red">Red</option> <option value="Green">Green</option> </select> <form name="Item_1" action="results.html" method='POST'> <button type="submit">Compare!</button> </form> 

Hier ist die Ansicht, wo die Ergebnisse aus der Auswahl von "Rot" angezeigt werden sollen

 % extends "template.html" %} {% block content %} <h2>Results</h2> {% for p in posts %} <strong>Item:</strong> {{ p.item }} <strong>Name:</strong> {{ p.name}} {% endfor %} {% endblock %} 

2 Solutions collect form web for “Übergeben von Wert aus einem Dropdown-Menü zu einer Flaschenvorlage”

Sie müssen Ihre select in das form .

 <form name="Item_1" action="results.html" method='POST'> <select name="Item_1"> <option value="Red">Red</option> <option value="Green">Green</option> </select> <button type="submit">Compare!</button> </form> 

Ein noch besserer Weg, um das form zu erklären wäre

 <form name="Item_1" action="{{ url_for('results') }}" method="POST"> 

Wie erwähnt von @dim setzen Sie die Auswahl innerhalb eines Formulars und der gewählte Wert kann mit request.form['Item_1'] . Allerdings ist das Element abgefragt ist eine Auswahl, so würde ich lieber verwenden statt POST. Aus Wiki, http://de.wikipedia.org/wiki/POST_(HTTP) wird POST verwendet, wenn

 Die POST-Anforderungsmethode ist so ausgelegt, dass ein Webserver die im Anforderungsnachricht enthaltenen Daten zur Speicherung akzeptiert. [1]  Es wird oft beim Hochladen einer Datei oder beim Einreichen eines ausgefüllten Webformulars verwendet.

Also würde ich lieber GET bevorzugen, mit dem man die Datenbank abfragen kann. Bei Verwendung von GET kann Item_1 als Anforderungsparameter übergeben werden und hat mit flask.request.args verwendet

  • Wie lösche ich eine Tabelle in SQLAlchemy?
  • Wie man sqlite in CSV in Python exportiert, ohne als Liste formatiert zu werden?
  • Gibt es einen Weg, um eine Liste der Spaltennamen in sqlite zu bekommen?
  • NumPy Arrays mit SQLite
  • Fragen zum Erstellen von Tabellen und Transaktionen in sqlite3 von Python
  • Warum bekomme ich einen 500 Fehler beim Versuchen, mit einer sqlite Datenbank zu verbinden?
  • SQLite, Python-, Unicode- und Non-Utf-Daten
  • Wie baue ich sqlite für Python 2.4?
  • Verschlüsselte Datei oder db in python
  • Einfügen von numpy Integer-Typen in sqlite mit python3
  • Verbinden Sie mit einer Datenbank in Flasche, welcher Ansatz ist besser?
  • Python ist die beste Programmiersprache der Welt.