最初の動的ウェブサイトの作成: Hello, you!

前章で作成したファイルHello.cpyを編集し、以下のように変更します:

CherryClass Root:
mask:
    def index(self, name="you"):
        <html><body>
            Hello, <b py-eval="name"></b> !
            <form py-attr="request.base" action="" method="get">
                Enter your name: <input name=name type=text><br>
                <input type=submit value=OK>
            </form>
        </body></html>

ファイルを再度コンパイルしてサーバーを再起動してください。そうしたらブラウサ上のページを再読み込みしてみてください。以下のように見えるはずです

Hello, you

すぐ後にテキストを入力できるフィールドが続きます。あなたの名前を入れてOKボタンを押してください。これで変更された文字は、

Hello, "your name"

どうやって動くのでしょうか?

今回、indexメソッドはnameと呼ばれるパラメータを持ちます。他のPythonのメソッドのように、 このパラメータはデフォルト値を持つ事ができます(今回の場合、you)。ブラウザがこのページをまず最初に閲覧した場合、nameパラメータは何も持ちませんので、nameはこの関数ではデフォルト値をとります。

あなたがテキストフィールドに何か書き込んでOKを押すと、ブラウザは同じページをリクエストしますが、今回の場合nameはパラメータとして受け渡され、それにあなたが入力した名前が入っているはずです。

form中でmethod="getを使ったので、パラメータnameはURL(あなたはブラウザ上でhttp://localhost:8000/?name=yourName というような形のURLで確認することができます)を使って受け渡されます。

さて、Hello.cpyを編集し、method="get"method="post"に変えてみてください。ファイルをリコンパイルしサーバを再起動し、テストをやり直してください: name=yourNameがURLにでてこない以外は全て同じように動きます。これはformでGETメソッドの代わりにPOSTメソッドを使ったためです。

ここで学んだことは:

テンプレート言語を使ってもっと面白いことをする時がきました。。。



Debian User 2003-10-13