1

モジュールを使用してcgiフォーム入力データを処理していますが、フォームと処理を別々のファイル(モジュール?)にしたいと思います。POSTed情報をHTMLから処理ファイルに渡す方法はありますか?

私はフレームワークを使用していないので、これをできるだけシンプルに保ちたいと思います。HTMLをPythonファイルに出力することでこれを機能させることができることは知っていますが、2つを分けておきたいと思います。

実際の問題コードは次のとおりです。

<form action="processes/process.py" method="post">
            <div id="name1" class="formData"><label for="">First name:</label><input name="firstName" type="text" id="firstName" /></div>
            <div id="name2" class="formData"><label>Last name:</label><input name="lastName" type="text" id="lastName" /></div>
            <div id="email" class="formData"><label>Email address:</label><input name="emailAddress" type="text" id="emailAddress" /></div>
            <div id="mailAddress" class="formData"><label>Mailing address:</label><input name="physicalAddress" type="textarea" id="physicalAddress" /></div>

            <input type="submit" value="Submit" onClick="T_validateForm('firstName','','R','lastName','','R','EmailAddress','','RisEmail');return document.T_returnValue">
        </form>

これをprocess.pyファイルに出力してアクションを変更することはできますが、このフォームコードを、フォームからの情報の管理と配布に使用するコードとは別にしたいと思います。データをprocess.pyに渡す必要があります

私はここでPythonコードのデータを取得しようとしています:

form = cgi.FieldStorage()
firstName = form['firstName'].value
lastName = form['lastName'].value
emailAddress = form['emailAddress'].value
physicalAddress = form['physicalAddress'].value

私はphpformでがに置き換えられていることを知ってい$_POSTます。Pythonに同様の識別子はありますか?formそれらが同じファイルにある場合は機能しますが、PythonにHTMLからデータを取得するように指示する方法があるはずPOSTです。私はそれがそれをしたと思ったcgi.FieldStorage()が、それはうまくいかない。パラメータをに渡す必要がありますcgi.FieldStorage()か?

4

1 に答える 1

2

質問はかなり広いですが、コンテンツ、ロジック、プレゼンテーションを分離することがあなたが求めているものであることは理解しています。

JinjaMakoChameleonなどのテンプレート言語をお探しですか?または、 FormEncodeのような単純なフォーム生成および検証ライブラリ?これらは、Webフレームワークの有無にかかわらず同じように簡単に使用できます。

PHPとは対照的に、PythonではCGIはほとんど使用されません。代わりにWSGIを使用するか、独自のリクエストモデルとフォーム処理ライブラリを備えたWebフレームワーク(マイクロからラージ)を使用します。CGIを使用して自分でそれを行うことは教育的な例かもしれませんが、ほとんどの場合、小さなWebアプリの場合でも既存のフレームワークを使用する方が良いでしょう。ボトルのようなマイクロフレームワークである可能性があります。

コードをいくつかのPythonモジュールに分解する方法が不明な場合は、それについて新しい質問をします(おそらく、Web開発とはまったく関係がない場合に最適です)。さらに、Python用のいくつかのテンプレート言語と、場合によってはいくつかのマイクロフレームワークを評価します。

于 2012-11-01T02:03:44.520 に答える