J'essaie de créer un menu déroulant en HTML en utilisant les informations d'un script python. Je l'ai fait fonctionner jusqu'à présent, cependant, le menu déroulant html affiche les 4 valeurs dans les listes comme 4 options.
Courant: Option 1: Rouge, bleu, noir orange; Option 2: Rouge, bleu, noir, orange etc. (Capture d'écran dans le lien) Actuel
Souhaité: Option 1: Rouge Option 2: Bleu etc.
Comment puis-je faire en sorte que la liste python soit séparée?
dropdown.py
from flask import Flask, render_template, request
app = Flask(__name__)
app.debug = True
@app.route('/', methods=['GET'])
def dropdown():
colours = ['Red', 'Blue', 'Black', 'Orange']
return render_template('test.html', colours=colours)
if __name__ == "__main__":
app.run()
test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dropdown</title>
</head>
<body>
<select name= colours method="GET" action="/">
{% for colour in colours %}
<option value= "{{colour}}" SELECTED>{{colours}}</option>"
{% endfor %}
</select>
</select>
</body>
</html>
vous avez une faute de frappe, remplacez colours
par colour
<option value= "{{colour}}" SELECTED>{{colours}}</option>"
remplacer pour
<option value= "{{colour}}" SELECTED>{{ colour }}</option>"
<!-- ^^^^ -->
Vous devez utiliser {{colour}}
aux deux endroits (au lieu de {{colours}}
à la seconde place):
<select name="colour" method="GET" action="/">
{% for colour in colours %}
<option value="{{colour}}" SELECTED>{{colour}}</option>"
{% endfor %}
</select>
Notez que l'utilisation de selected
dans la boucle ajoutera l'attribut selected
à toutes les options et la dernière sera sélectionnée, ce que vous devez faire est le suivant:
<select name="colour" method="GET" action="/">
<option value="{{colours[0]}}" selected>{{colours[0]}}</option>
{% for colour in colours[1:] %}
<option value="{{colour}}">{{colour}}</option>
{% endfor %}
</select>