Übergabe Wert aus einem drop-down-Menü, um eine Kolben-Vorlage

Ich habe ein Problem Vorbeigehen ein Element ausgewählt aus einer HTML-drop-down-Menü, um eine SQL-Abfrage.

Ich bin mir nicht genau sicher, was Konzept fehlt aus meinem code um diese Arbeit zu machen. Die meisten Beispiele, die ich gefunden haben, sind in PHP und ich bin mir nicht sicher wie das zu übersetzen, es zu Python.

Hier ist das Szenario. Ich bin mit Kolben und Sqlite, und bin, lassen Sie den Benutzer wählen Sie ein Element aus einer HTML-drop-down-Menü. Das Element, ausgewählt aus der drop-down-Menü verwendet werden in einer SQL-Abfrage zum abrufen von Informationen aus einer Datenbank und zeigen die Ergebnisse auf einer neuen Seite.

Ein Beispiel wählt der Benutzer "Roten" aus einem drop-down, der hat 3 Möglichkeiten (Rot, Blau, Grün) und klickt auf die Schaltfläche "senden". "Rot" verabschiedet werden, um eine SQL-Abfrage in meine app.py Datei, die alle Daten abrufen von Zeilen, in denen Farbe = "Rot". Dass die abgerufenen Daten werden dann angezeigt /results.html.

Ich glaube, mein problem ist, dass ich nicht richtig Zuordnung eines Werts zu den items in meinem drop-down-Menü, und dann übergeben, die Wert auf mein Python-code ausgeführt wird, der SQL-Abfrage. Das ist meine Vermutung, wie das funktionieren sollte, aber ich fehlt, etwas größer hier.

Habe ich versucht viele bits von HTML, um diese Arbeit machen, aber ich bin mir auch nicht sicher, das ist, wo mein problem Auftritt. Wenn ich drücken Sie "Submit" ich bin dabei, die Seite neu, aber nichts aus der Datenbank angezeigt

Hier ist mein code, für meine 2 Ansichten ('/' & 'results.html') und mein 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 zu sehen, wo die drop-down-Menüs vorhanden

<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>

Ist hier die Ansicht, wo die Ergebnisse von der Auswahl "Rot" angezeigt werden,

% extends "template.html" %}
{% block content %}
<h2>Results</h2>

{% for p in posts %}
    <strong>Item:</strong> {{ p.item }}
    <strong>Name:</strong> {{ p.name}}  
{% endfor %}
{% endblock %}
InformationsquelleAutor Alex | 2014-05-09
Schreibe einen Kommentar