📜  TurboGears-HTTP方法

📅  最后修改于: 2020-10-19 03:28:04             🧑  作者: Mango


Http协议是万维网上数据通信的基础。在此协议中定义了从指定URL检索数据的不同方法。下表总结了不同的http方法-

Sr.No. HTTP Methods & Description
1

GET

Sends data in unencrypted form to the server. Most common method.

2

HEAD

Same as GET, but without response body

3

POST

Used to send HTML form data to server. Data received by POST method is not cached by server.

4

PUT

Replaces all current representations of the target resource with the uploaded content.

5

DELETE

Removes all current representations of the target resource given by a URL

创建一个HTML表单

让我们创建一个HTML表单并将表单数据发送到URL。将以下脚本另存为login.html

Enter Name:

以这种形式输入的数据将被提交到‘/ 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}

可以看出,将从登录表单接收的数据发送到sample.html模板(先前使用)。由Genshi模板引擎对其进行解析,以生成以下输出-

源氏结果

开机自检方法

当HTML表单使用POST方法将数据分派到action属性中的URL时,表单数据不会在URL中公开。控制器函数以dict自变量接收编码后的数据。下面的** kw参数是保存数据的字典对象。

HTML表单包含两个输入文本字段。

Marks in Physics:

Marks in Maths:

marker()控制器接收表单数据,并将其发送到sample.html模板。 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

最后,sample.html模板如下-

TurboGears Templating Example
   
    
   
      

Hello, Welcome to TurboGears!.

Marks in Physics: ${phy}.

Marks in Maths: ${maths}.

Total Marks: ${total}

启动服务器(如果尚未运行)

Gearbox server –reload –debug

在浏览器中输入http:// localhost :: 8080 / marksform

样板范本

sample.html将呈现以下输出-

样本HTML结果