📅  最后修改于: 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表单并将表单数据发送到URL。将以下脚本另存为login.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}
可以看出,将从登录表单接收的数据发送到sample.html模板(先前使用)。由Genshi模板引擎对其进行解析,以生成以下输出-
当HTML表单使用POST方法将数据分派到action属性中的URL时,表单数据不会在URL中公开。控制器函数以dict自变量接收编码后的数据。下面的** kw参数是保存数据的字典对象。
HTML表单包含两个输入文本字段。
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将呈现以下输出-