Turbogears-http-methods

提供:Dev Guides
移動先:案内検索

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* は次の出力をレンダリングします-

サンプルHTML結果