セッションにデータを記憶する

 Zopeではセッション機構がとても簡単に使えます。 以下の簡単な例は3つのHTML文書を渡るアプリケーションで、 最初のページで名前を入力してもらい、2番目のページでくだものを選んでもらい、 最後のページで両方の入力結果を表示します。

DocForm1 (DTML Document)

<dtml-var standard_html_header>
<h2>名前を入力して下さい。</h2>

<form action="DocForm2" method="POST">
<input type="text" name="username">
<input type="submit" value="OKなり">
</form>

<dtml-var standard_html_footer>

最初のページです。名前を好きなように入力してもらいます。

DocForm2 (DTML Document)

<dtml-var standard_html_header>
<dtml-call expr="REQUEST['SESSION'].set('username', username)">

<h2>品物を選んでください。</h2>
<form action="DocResult" method="POST">
<input type="radio" name="item" value="りんご" checked>りんご</input>
<input type="radio" name="item" value="みかん">みかん</input>
<input type="radio" name="item" value="もも">もも</input>
<br>
<input type="submit" value="OKなり">
</form>

<dtml-var standard_html_footer>

2番目のページです。先のページで入力された名前が変数usernameに入っているので、 これを REQUEST['SESSION'].set メソッドでセッションに記憶します。 引数は(キー、値)です。 ちなみにScript(Python)の中でセッションにアクセスするには、 自分が乗っているページのリクエストオブジェクトに格納されていることから、 container.REQUEST['SESSION'] となります。
そして、今度はくだものを3択で選んでもらっています。

DocResult (DTML Document)

<dtml-var standard_html_header>
<h2>OKなり!</h2>
<p>
<dtml-let username="REQUEST['SESSION'].get('username')">
<dtml-var username>さんは<dtml-var item>を選びました。
</dtml-let>
</p>
<p>
<a href="DocForm1">最初に戻る</a>
</p>
<dtml-var standard_html_footer>

最後のページです。セッションに記憶された情報は REQUEST['SESSION'].getメソッドで取得できます。

セクションのサブメニューに戻る
(first uploaded 2002/05/26 last updated 2002/12/05)