Pyramidやその他のサーバーサイドフレームワークや言語ではこれを行うことはできません。
サンプルコードはフォーム送信を示していません。コードはHTTPリダイレクトを示しています。これは、ブラウザに別のURLにアクセスするように指示している、つまり、ブラウザにリクエストを再送信するように指示しています。
このStackOverflowの質問では、これと同じ概念について説明していますが、ASPではPythonではなく-Response.RedirectでGetの代わりにPOSTを使用しますか?
GETまたはPOSTを介してPyramidで「リクエストを送信」する場合は、、、などのライブラリを使用する必要がありurllib2
ますrequests
。そのような場合、ライブラリはPyramidサーバーをリクエストの「送信者」として機能させます。
ユーザー/ウェブブラウザにPOSTでリクエストを送信させたい場合は、ブラウザにそれを行わせるために、いくつかの凝ったフットワーク/トリックを行う必要があります。
それを達成するための可能な方法は次のとおりです。
- JavaScript AJAXフォーム送信を使用し、JSONを介してエラーコードまたは命令を返し、JavaScriptライブラリにPOSTを介して同じフォームを再送信するように指示します。
- ユーザーをフォームデータが入力されたGETページにリダイレクトし(GET引数を介して)、JavaScriptを使用してPOSTオンロードを介してフォームを再送信します
サーバー側の言語では、POSTでリクエストを再送信するようにブラウザに指示することはできません。ブラウザはそのようには機能しません。
また、「ほとんどのブラウザ」は、元のブラウザがPOSTであったとしても、通常、GETを介してフェッチされるリダイレクトリクエストを解釈することを知っておく必要があります。これは仕様ではありません-特定のリダイレクトコードはPOSTをPOSTに保つことになっています-しかし、ブラウザはすべての仕様に準拠しているわけではありません。意図的にGETからPOSTに切り替えるHTTPステータスコードやコマンドもありません。