Aiuto con Python nel web
Domanda
Ho usato Werkzeug per creare applicazioni conformi a WSGI. Sto cercando di modificare il codice nella prima pagina.
La sua idea di base è che vai all'URL / hello e ottieni un " Hello World! " Messaggio. Vai a / ciao / e ricevi " ciao! & Quot ;. Ad esempio, / hello / jeff produce " Hello Jeff! & Quot ;. Comunque, quello che sto cercando di fare è mettere un modulo in prima pagina con una casella di testo in cui puoi inserire il tuo nome e lo invierà a / hello. Quindi, se inserisci " Jeff " nel modulo e invia, ricevi il messaggio " Ciao Jeff! " messaggio.
Tuttavia, non ho idea di come farlo. Devo passare il " nome " variabile per il modello ciao, ma non so come. Ecco il mio 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 = " ricevere " neanche funziona, prevedibilmente.
Soluzione
Fallo nel modo giusto: vai su / hello? name = joe
per salutare Joe, e così via. Ecco come HTML / HTTP è progettato per funzionare! Il tuo codice dietro l'URL / hello
deve solo ottenere il parametro name
dalla richiesta, se presente, e rispondere di conseguenza.
Altri suggerimenti
I moduli HTML hanno un indirizzo di destinazione statico, action = " / qualcosa "
, ma si desidera cambiare l'indirizzo in base all'input dell'utente .
Hai due opzioni:
-
Aggiungi javascript al modulo html in cambia l'indirizzo di destinazione (di aggiungendo il nome) prima del modulo è stato inviato.
-
Scrivi un nuovo metodo nel tuo framework web che legge GET o POST variabili e puntare il modulo lì.
Direttamente sul link alla pagina da te fornito ( http://werkzeug.pocoo.org/ ) quando fai clic su "Fai clic qui", ottieni un codice per l'esempio ciao X. Quello che sembra mancare è:
Hello ${url_values['name']|h}!
da qualche parte nel tuo modello html (supponendo che sia il modello per la risposta e per la richiesta)
L'HTML si basa sul principio REST ... ogni url dovrebbe essere un oggetto, come una persona; NON un'azione, come salutare una persona. Chiedi all'URL di identificare chi vuoi salutare solo se la tua applicazione web sa chi è internamente, guardando il suo database.
Se la tua applicazione web non ha alcun oggetto chiamato Joe, la progettazione di URL con Joe non è l'approccio giusto. La tua particolare applicazione web è scoprire chi sono le persone e inviare loro un messaggio di benvenuto. Quindi, dovresti probabilmente avere un URL: / greeter, che cerca le informazioni inviate nelle richieste GET o POST (dal tuo modulo) e visualizza un saluto. Se non sa chi salutare, può visualizzare il modulo per scoprirlo.
Pensa sempre in termini di oggetti con cui stai effettivamente lavorando --- i componenti che compongono il sistema --- quando costruisci un software.