Comment obtenir les données de formulaire de saisie en tant que variable dans le Flacon?
Je suis en train de travailler sur une INTERFACE utilisateur simple pour démarrer et arrêter les jeux par ID. Le HTML de base, j'ai écrit est comme suit (game_id
est peuplée par JS):
<div align="center" class="top">
<div align="left" class="game-id-input">
Game ID: <input type="text" name="game_id" id="game_id">
</div>
<div align="right" class="buttons">
<form action="{{ url_for('start_game', game_id=game_id) }}" method="get">
<input type="submit" name="start" value="Start game" class="btn btn-success"></input>
</form>
<form action="{{ url_for('end_game', game_id=game_id) }}" method="get">
<input type="submit" name="end" value="End game" class="btn btn-danger"></input>
</form>
</div>
</div>
qui ressemble
J'ai aussi Fiole itinéraire fonctions définies pour chacune des formes:
@app.route("/start_game/<game_id>")
def start_game(game_id):
# ...
@app.route("/end_game/<game_id>")
def end_game(game_id):
# ...
Dans mes formulaires, comment puis-je faire game_id
correspondent à la game_id
de #game_id
?
Actuellement quand je soumettre de début et de fin des jeux, j'obtiens un Fichier ne Trouve Pas d'erreur car il est juste en ajoutant le littéral <game_id>
de la route.
Je suis nouveau sur le développement web. Cela devrait être trivial, mais je ne sais pas quoi chercher. Désolé à l'avance pour une question aussi simple.
Vous devez vous connecter pour publier un commentaire.
Vous essayez de générer une url basée sur la saisie de l'utilisateur, mais la saisie de l'utilisateur n'est pas disponible lors de la Jinja est rendu le modèle sur le côté serveur, il est seulement disponible sur le côté client. Donc si vous voulez poster des Url avec l'id du jeu comme un paramètre de l'URL, vous devez construire cette URL sur le côté client avec JavaScript.
Pour ce que vous êtes en train de faire, ce n'est pas vraiment nécessaire. Vous pouvez obtenir la valeur soumises à un nommé entrée avec
request.form['name']
. Les boutons sont comme tous les autres d'entrée, de sorte que vous pouvez les nommer pour savoir quelles mesures ont été prises.Encore, ce n'est plus bavarde que vous avez besoin. Étant donné que vous savez si un jeu est déjà en cours, juste basculer l'état actuel, au lieu de sélectionner une action. Il ne pourrait jamais faire sens pour démarrer un jeu qui est déjà commencé, seulement l'arrêter.
Je ne peux pas commenter, mais je tiens à corriger davidism de code.
Je crois que vous avez besoin d'action au sein de votre élément de formulaire avec une valeur qui correspond à la fonction dans le serveur de code python pour que cela fonctionne. Mineur, mais une correction importante. Donc, il serait comme ceci:
Dans votre server.py:
Dans votre code HTML: