0

私はWerkzeugを使用してWSGI準拠のアプリケーションを作成してきました。フロントページのコードを変更しようとしています。

その基本的な考え方は、/ hello URLにアクセスすると、「HelloWorld!」を取得することです。メッセージ。/ hello /に移動すると、「hello!」が表示されます。たとえば、/ hello / jeffは「HelloJeff!」を生成します。とにかく、私がやろうとしているのは、名前を入力できるテキストボックスを含むフォームをフロントページに配置することです。フォームは/helloに送信されます。したがって、フォームに「Jeff」と入力して送信すると、「HelloJeff!」が表示されます。メッセージ。

しかし、私はこれを行う方法がわかりません。「name」変数をhelloテンプレートに渡す必要がありますが、方法がわかりません。これが私の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"も、予想どおりに機能しません。

4

4 に答える 4

1

それを正しい方法で/hello?name=joe行います。ジョーに挨拶するために行きます。これが、HTML/HTTPが機能するように設計されている方法です。/helloURLの背後にあるコードnameは、リクエストからパラメータを取得し、存在する場合はそれに応じて応答する必要があります。

于 2009-09-19T03:14:15.257 に答える
0

HTMLフォームには静的なターゲットアドレスがありますが、ユーザー入力に応じてアドレスaction="/something"を変更する必要があります。2つのオプションがあります。

  1. フォームを送信する前に、JavaScriptをhtmlフォームに追加して、ターゲットアドレスを(名前を追加して)変更します。

  2. GETまたはPOST変数を読み取り、そこにフォームを指定する新しいメソッドをWebフレームワークに記述します。

于 2009-09-18T23:03:11.230 に答える
-1

「ここをクリック」をクリックすると、提供先のページリンク(http://werkzeug.pocoo.org/)に直接アクセスすると、helloXの例のコードが表示されます。あなたが欠けているように見えるものは次のとおりです。

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

HTMLテンプレートのどこかにあります(これが応答用と要求用のテンプレートであると想定しています)

于 2009-09-18T22:31:30.870 に答える
-1

HTMLはRESTの原則に基づいています...各URLは人のようなオブジェクトである必要があります。人に挨拶するような行動ではありません。あなたのウェブアプリケーションがそのデータベースを見て、それが内部的に誰であるかを知っている場合にのみ、あなたが挨拶したい人をURLに特定させてください。

WebアプリケーションにJoeというオブジェクトがない場合、Joeを含むURLを設計することは適切なアプローチではありません。あなたの特定のウェブアプリケーションは、人々が誰であるかを見つけて、彼らにハローメッセージを送ることについてです。したがって、おそらく1つのURLが必要です。/greeterは、(フォームから)GETまたはPOSTリクエストで送信された情報を検索し、挨拶を表示します。誰に挨拶すればいいのかわからない場合は、フォームを表示して調べることができます。

ソフトウェアを構築するときは、実際に操作しているオブジェクト、つまりシステムを構成するコンポーネントの観点から常に考えてください。

于 2009-09-18T23:31:56.003 に答える