Question

J'utilise Werkzeug pour créer des applications compatibles avec WSGI. J'essaie de modifier le code de la page d'accueil.

L’idée de base est d’aller à l’URL / hello et d’obtenir le message "Hello World!". message. Vous allez à / bonjour / et vous obtenez "bonjour!". Par exemple, / hello / jeff renvoie "Hello Jeff!". Quoi qu’il en soit, ce que j’essaie de faire, c’est de placer un formulaire sur la page d’accueil avec une zone de texte dans laquelle vous pouvez entrer votre nom et il sera envoyé à / bonjour. Donc, si vous entrez & Jeff; Jeff " dans le formulaire et envoyez, vous obtenez le message "Bonjour Jeff!". message.

Cependant, je ne sais pas comment faire cela. Je dois passer le " nom " variable au bonjour modèle, mais je ne sais pas comment. Voici mon index.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Index page</title>
</head>

<body>
<h1>Go to the <a href="${url_for('say_hello')}">default</a></h1>
<form name="helloform" action="${url_for('say_hello')}" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>

method = " get " ne fonctionne pas non plus, comme on pouvait s'y attendre.

Était-ce utile?

La solution

Faites-le comme il convient: allez dans / hello? name = joe pour dire bonjour à joe, etc. C’est ainsi que le design conçu pour le HTML / HTTP fonctionne! Votre code derrière l'URL / hello doit simplement extraire le paramètre name de la demande, le cas échéant, et répondre en conséquence.

Autres conseils

Les formulaires HTML ont une adresse cible statique, action = "/ quelque chose" , mais vous souhaitez modifier l'adresse en fonction de la saisie utilisateur . Vous avez deux options:

  1. Ajoutez le javascript au formulaire HTML pour changer l'adresse cible (par ajouter le nom) avant le formulaire est soumis.

  2. Ecrivez une nouvelle méthode dans votre framework web qui lit GET ou POST variables et pointez le formulaire à cet endroit.

Directement sur le lien de page auquel vous fournissez ( http://werkzeug.pocoo.org/ ) en cliquant sur 'Cliquez ici', vous obtenez un code pour l'exemple hello X. Ce qui vous semble manquer, c'est:

Hello ${url_values['name']|h}!

quelque part dans votre modèle HTML (en supposant qu'il s'agisse du modèle pour la réponse ainsi que pour la demande)

HTML est basé sur le principe REST ... chaque URL doit être un objet, comme une personne. PAS une action, comme dire bonjour à une personne. Demandez à l’URL d’identifier les personnes que vous souhaitez saluer uniquement si votre application Web sait qui est en interne, en consultant sa base de données.

Si votre application Web ne comporte aucun objet appelé Joe, la conception d'URL avec Joe dans ces applications n'est pas la bonne approche. Votre application Web consiste à rechercher des personnes et à leur envoyer un message de bienvenue. Ainsi, vous devriez probablement avoir une URL: / greeter, qui recherche les informations envoyées dans les requêtes GET ou POST (à partir de votre formulaire) et affiche un message d'accueil. S'il ne sait pas à qui saluer, il peut afficher le formulaire à découvrir.

Pensez toujours aux objets avec lesquels vous travaillez réellement - aux composants qui composent le système - lors de la création d'un logiciel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top