HiiHahWIKI - making some notes for... -
E71:MWSでmod_python.publisherを使ってみる
をテンプレートにして作成
開始行:
*E71:MWSでmod_python.publisherを使ってみる [#e612bfb5]
さてさて、MWSチュートリアルでは、独自ハンドラーを使って動...
公式のチュートリアルのURL
-http://www.python.jp/doc/contrib/modpython/tutorial.html
Publisherハンドラーの解説
-http://www.python.jp/doc/contrib/modpython/hand-pub.html
さてさて、とりあえず、動かしてみる。
***Publisherハンドラーの動作概要 [#pf74ae2f]
Publisherハンドラーは、uriに指定されたモジュール、関数を...
つまり、uriより処理の振り分けをやってくれます!
小生はいままではほとんどjavaしかやったことが無いのですが...
使ってみると、かなり感動ですよ笑
***作成する前に [#c328f021]
本記事は、先にリンクを貼り付けたチュートリアルに''だいた...
&br;※チュートリアルでは、メールを送信するプログラムになっ...
今回作成するファイルは以下の構成で配置します。
E━data━Web server┳Data
┣conf
┣htdocs┳・・・
┣・・・
┗demo10 ← 今回作成するディレ...
┣.htaccess ←作成するフ...
┣form.html ←作成するファイ...
┗form.py ←作成するファイ...
作成するファイルそれぞれは
+.htaccess : お約束で、ハンドラーの設定を記述
+form.html : 入力フォームを表示するためのhtmlファイル
+form.py : フォームのアクション時のターゲット
です。
***.htaccessを作成 [#i55cbfa8]
まず、.htaccessを作成します。
■.htaccess
# setting Handler
AddHandler mod_python .py ←1
# Add Python Handler
PythonHandler mod_python.publisher ←2
# Debug On
PythonDebug On ←3
# Option OFF
Options None ←4
+apacheのハンドラーとしてmod_pythonを指定する、お決まりの...
+python handlerとして、publisherを指定します。これで、こ...
+デバッグモードをオンにします。
+その他のオプションは指定しません。
まあ、端的には 「2」の設定がpublisherを使う際に必要とな...
***form.htmlを作成 [#qa4f9d40]
次に、入力フォームを表示するhtmlを作成します。
■form.html
<html>
Send feedback:
<p>
<form action="form.py/email" method="POST"> ←1
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
Comment: <textarea name="comment" rows=4 cols=20 ></t...
<input type="submit">
</form>
</html>
ポイントは、「1」の 「action="form.py/email"」ってところ...
動きについては最後に解説します。
***form.pyの作成 [#mb786cf2]
最後に、サーバで実行されるモジュールを作成します。
■form.py
WEBMASTER = 'webmaster'
def email( req, name, email, comment ): ←1
# ユーザがすべての情報を入力したか確認する
if not ( name and email and comment ):
return "必要な情報が入力されてません"
# 画面に返却するメッセージを作成する
msg = """¥
<html>
From :%s
To %s
Comment: %s
</html>
""" % (name, WEBMASTER, comment)
return msg
このソースで、一にも二にも、重要なのは「1」の部分です。&...
def email( req, name, email, comment ):
第1引き数は固定で、reqを指定します。第2引き数からは、入...
他の部分は、端的には、入力された情報を成型して返却するだ...
***動作画面 [#kfb5f856]
さてさて、上のソースを書いて配置すると、次のような画面が...
&ref(Screenshot0057.jpg);
画面に入力して、submitボタンを押すと
&ref(Screenshot0058.jpg);
入力したメッセージの一部が表示される。
&ref(Screenshot0059.jpg);
※一部文字化けしているのはご愛嬌笑
このとき、publisherはこんな動きをしてます。
+このフォームのsubmitボタンが押されて、リクエストが送信さ...
+.htaccessの設定により、「mod_python.publisher」が実行さ...
+mod_python.publisherは、 uriより、「form.py」モジュール...
+email関数の中で出力するhtmlを編集し、返却する
~関数の返却値がリクエストの返却値となる。
まあ、こんな感じですかね~
なんにしても、便利で簡単な仕組みです。
終了行:
*E71:MWSでmod_python.publisherを使ってみる [#e612bfb5]
さてさて、MWSチュートリアルでは、独自ハンドラーを使って動...
公式のチュートリアルのURL
-http://www.python.jp/doc/contrib/modpython/tutorial.html
Publisherハンドラーの解説
-http://www.python.jp/doc/contrib/modpython/hand-pub.html
さてさて、とりあえず、動かしてみる。
***Publisherハンドラーの動作概要 [#pf74ae2f]
Publisherハンドラーは、uriに指定されたモジュール、関数を...
つまり、uriより処理の振り分けをやってくれます!
小生はいままではほとんどjavaしかやったことが無いのですが...
使ってみると、かなり感動ですよ笑
***作成する前に [#c328f021]
本記事は、先にリンクを貼り付けたチュートリアルに''だいた...
&br;※チュートリアルでは、メールを送信するプログラムになっ...
今回作成するファイルは以下の構成で配置します。
E━data━Web server┳Data
┣conf
┣htdocs┳・・・
┣・・・
┗demo10 ← 今回作成するディレ...
┣.htaccess ←作成するフ...
┣form.html ←作成するファイ...
┗form.py ←作成するファイ...
作成するファイルそれぞれは
+.htaccess : お約束で、ハンドラーの設定を記述
+form.html : 入力フォームを表示するためのhtmlファイル
+form.py : フォームのアクション時のターゲット
です。
***.htaccessを作成 [#i55cbfa8]
まず、.htaccessを作成します。
■.htaccess
# setting Handler
AddHandler mod_python .py ←1
# Add Python Handler
PythonHandler mod_python.publisher ←2
# Debug On
PythonDebug On ←3
# Option OFF
Options None ←4
+apacheのハンドラーとしてmod_pythonを指定する、お決まりの...
+python handlerとして、publisherを指定します。これで、こ...
+デバッグモードをオンにします。
+その他のオプションは指定しません。
まあ、端的には 「2」の設定がpublisherを使う際に必要とな...
***form.htmlを作成 [#qa4f9d40]
次に、入力フォームを表示するhtmlを作成します。
■form.html
<html>
Send feedback:
<p>
<form action="form.py/email" method="POST"> ←1
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
Comment: <textarea name="comment" rows=4 cols=20 ></t...
<input type="submit">
</form>
</html>
ポイントは、「1」の 「action="form.py/email"」ってところ...
動きについては最後に解説します。
***form.pyの作成 [#mb786cf2]
最後に、サーバで実行されるモジュールを作成します。
■form.py
WEBMASTER = 'webmaster'
def email( req, name, email, comment ): ←1
# ユーザがすべての情報を入力したか確認する
if not ( name and email and comment ):
return "必要な情報が入力されてません"
# 画面に返却するメッセージを作成する
msg = """¥
<html>
From :%s
To %s
Comment: %s
</html>
""" % (name, WEBMASTER, comment)
return msg
このソースで、一にも二にも、重要なのは「1」の部分です。&...
def email( req, name, email, comment ):
第1引き数は固定で、reqを指定します。第2引き数からは、入...
他の部分は、端的には、入力された情報を成型して返却するだ...
***動作画面 [#kfb5f856]
さてさて、上のソースを書いて配置すると、次のような画面が...
&ref(Screenshot0057.jpg);
画面に入力して、submitボタンを押すと
&ref(Screenshot0058.jpg);
入力したメッセージの一部が表示される。
&ref(Screenshot0059.jpg);
※一部文字化けしているのはご愛嬌笑
このとき、publisherはこんな動きをしてます。
+このフォームのsubmitボタンが押されて、リクエストが送信さ...
+.htaccessの設定により、「mod_python.publisher」が実行さ...
+mod_python.publisherは、 uriより、「form.py」モジュール...
+email関数の中で出力するhtmlを編集し、返却する
~関数の返却値がリクエストの返却値となる。
まあ、こんな感じですかね~
なんにしても、便利で簡単な仕組みです。
ページ名: