2

私はPythonが初めてです(どういうわけか、2日前にPythonを見始めました)。

CGI を使用して簡単な対話型 Web ページを作成しようとし、HTML フォームを使用してユーザー入力を取得しました。しかし、誰もが知っているように、Web ページを更新すると、フォーム データが再送信されます。これが起こらないようにする方法がわかりません。

同じ問題ですが、php/javascript で議論されており、解決策を見つけることができますが、python の場合の答えを見つけたいと思います。

私の問題に対処できる人がここにいることを願っています。私はその言語にあまり詳しくないので、説明的な解決策を提供するだけでなく、必要なコードの断片も提供してくれることを願っています。

どうもありがとうございました

4

3 に答える 3

3

あなたの質問は Python 固有のものではなく、一般的な Web アプリケーションの設計パターンに関するものです。

  1. GETWeb アプリの状態を変更しない要求 (表示、クエリなど) には s を使用します。応答でページをレンダリングします。
  2. POST状態を変更するあらゆる要求 (投稿の送信、編集、削除) に使用します。
  3. 応答で何もレンダリングせず、の結果が表示されるページに303 See Otherリダイレクトを提供しPOSTます。たとえば、ユーザーがページhttp://example.com/blog/123にコメントを追加した場合、POSTハンドラーはhttp://example.com/submitcommentにすることができますが、 http://へのリダイレクトだけを返す必要があります。 example.com/blog/123#comment5 .

それが @mikep が Post-Redirect-Get と呼んだものです。

関連する注意事項:CGIをスキップして、自分自身を支持してください。Python 用の優れたクリーンな Web フレームワークが多数あります。Flask または Bottle (より小さなフレームワーク) を試すか、大きなアプリを構築している場合は Django に直行してください。さまざまなフレームワークの長所と短所については、Stack Overflow で検索してください。

CGIをスキップするだけです。優れた保守可能な CGI アプリを構築するのは困難です。処理すべきことが多すぎます。フレームワーク内であれば既に考えられていることです。

しばらくの間、CGI アプリケーションのサポートに時間を浪費していましたが、フレームワークに切り替えることで安心しました。

于 2012-05-19T10:55:42.617 に答える
2

POST-REDIRECT-GET Web プログラミング パターンを見てください。

于 2012-05-19T05:51:24.297 に答える
2

次の講義をご覧になることをお勧めします: http://www.udacity.com/overview/Course/cs253/CourseRev/apr2012

2週目はあなたの質問に答えます。

于 2012-05-19T05:25:52.013 に答える