Turbogears-http-methods
TurboGears-HTTPメソッド
Httpプロトコルは、World Wide Webのデータ通信の基盤です。 このプロトコルでは、指定されたURLからデータを取得するさまざまな方法が定義されています。 次の表は、さまざまなhttpメソッドをまとめています-
Sr.No. | HTTP Methods & Description |
---|---|
1 |
GET 暗号化されていない形式でデータをサーバーに送信します。 最も一般的な方法。 |
2 |
HEAD GETと同じですが、応答本文はありません |
3 |
POST HTMLフォームデータをサーバーに送信するために使用されます。 POSTメソッドによって受信されたデータは、サーバーによってキャッシュされません。 |
4 |
PUT ターゲットリソースの現在のすべての表現を、アップロードされたコンテンツで置き換えます。 |
5 |
DELETE URLで指定されたターゲットリソースの現在の表現をすべて削除します |
HTMLフォームの作成
HTMLフォームを作成し、フォームデータをURLに送信します。 次のスクリプトをloginlとして保存します
<html>
<body>
<form action = "http://localhost:8080/login" method = "get">
<p>Enter Name:</p>
<p><input type = "text" name = "nm"/></p>
<p><input type = "submit" value = "submit"/></p>
</form>
</body>
</html>
このフォームに入力されたデータは、 '/login' URL に送信されます。 次に、コントローラー関数* loginpage()*を作成し、上記のHTMLページを公開します。
@expose("hello.templates.login")
def loginpage(self):
return {}
フォームデータを受信するには、パラメーターとしてフォーム属性を持つ* login()*コントローラーを提供します。 ここで、「nm」はログインフォームのテキスト入力フィールドの名前で、login()関数のパラメーターとして使用されます。
@expose("hello.templates.sample")
def login(self, nm):
name = nm
return {'person':name}
ご覧のように、ログインフォームから受信したデータは、サンプルテンプレート(以前に使用)に送信されています。 次の出力を生成するために* Genshiテンプレートエンジン*によって解析されます-
POSTメソッド
HTMLフォームがPOSTメソッドを使用してアクション属性のURLにデータをディスパッチする場合、フォームデータはURLで公開されません。 エンコードされたデータは、コントローラー関数によって dict 引数で受信されます。 以下の** kw 引数は、データを保持する辞書オブジェクトです。
HTMLフォームには2つの入力テキストフィールドが含まれます。
<html>
<body>
<form action = "http://localhost:8080/marks" method = "post">
<p>Marks in Physics:</p>
<p><input type = "text" name = "phy"/></p>
<p>Marks in Maths:</p>
<p><input type = "text" name = "maths"/></p>
<p><input type = "submit" value = "submit"/></p>
</form>
</body>
</html>
- marks()コントローラーはフォームデータを受け取り、それを *samplel テンプレートに送信します。 root.py のコードは次のとおりです-
from hello.lib.base import BaseController
from tg import expose, request
class RootController(BaseController):
@expose("hello.templates.marks")
def marksform(self):
return {}
@expose("hello.templates.sample")
def marks(self, **kw):
phy = kw['phy']
maths = kw['maths']
ttl = int(phy)+int(maths)
mydata = {'phy':phy, 'maths':maths, 'total':ttl}
return mydata
最後に、samplelテンプレートは次のとおりです-
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
<h3>Marks in Physics: ${phy}.</h3>
<h3>Marks in Maths: ${maths}.</h3>
<h3>Total Marks: ${total}</h3>
</body>
</html>
サーバーを起動します(まだ実行されていない場合)
Gearbox server –reload –debug
- ブラウザに *http://localhost
- 8080/marksform* と入力します
*samplel* は次の出力をレンダリングします-