Ich bin sehr neu in Flask und Web-Entwicklung und habe einige Probleme mit der Erstellung einer Liste von einer Mongdb-Abfrage und die Übergabe an die HTML-Vorlage in einem Dropdown-Menü in Flask.Wählen Sie aus der Dropdown-Liste in der Flasche
Bitte beachten Sie den aktuellen Code unten:
views.py
from flask import render_template
from app import app
from pymongo import MongoClient
@app.route('/')
@app.route('/index')
def index():
user = {'name': 'Bob'}
client = MongoClient()
client = MongoClient('mongodb://localhost:27017/')
db = client.test_database
db = client['test-database']
collection = db.test_collection
posts = db.posts
name_list = []
for post in posts.find({'type': "server"}):
name_list.append(post['name'])
# Get selected option and save into variable?
#if:
# choice = x.option
return render_template("index.html",
title='Database selector',
user = 'Bob',
server_list=name_list)
server_list enthält: [u'server1' , u'server2' , u'server3' ]
Index .html Vorlage
<html>
<head>
<title>{{ title }} - Test</title>
</head>
<body>
<h1>Hi, {{ user }}!</h1>
<h2>Option selector</h2>
<h3><table><form action="" method="POST">
<td>
<label>Select :</label>
<select name="option" width="300px">
{% for x in server_list %}
<option value="{{ x.option }}" SELECTED>{{ x.option }}</option>
{% endfor %}
</select>
</td>
</form></table></h3>
</body>
</html>
Zunächst wird die Auswahlliste nicht ausgefüllt und zweitens, hätte jemand eine Art Vorschläge, wie man das Ergebnis der Auswahl erfasst, damit ich es in einer anderen Datenbankabfrage verwenden und eine zweite Dropdown-Liste generieren kann?
Alle Hinweise sehr geschätzt.
Vielen Dank
Danke PJ Santoro .. - das war sehr hilfreich - Als Fortsetzung würde Ich mag das Ergebnis zu übergeben der Auswahl zurück zu dem Code, um eine neue Datenbankabfrage zu machen und dann ein zweites Dropdown-Feld auf der gleichen Seite zu füllen. Ich habe Code wie folgt für die Python und Jinja .. aber der übergebene Wert wird nicht korrekt zurückgegeben - würden Sie bitte weitere Gedanken haben? –
wenn request.form [ 'submit'] == 'MYSELECT': Wahl = x sub_name_list = [q [ 'sub_server'] für q in posts.find ({ 'Typ': Wahl})] return render_template ("index.html", title = 'Datenbank Selektor', user = 'Bob', server_list = name_list, sub_server_list = sub_name_list) –