访问用户输入¶
在构建web应用程序时,一个基本而重要的事情是响应发送到服务器的用户输入。
网页.py方便访问是否是url中的参数 (GET 请求)或表单数据 (POST 或 PUT 请求)。这个 web.input() 方法返回类似字典的对象(更具体地说是 web.storage 对象),它包含用户输入,无论请求方法是什么。
访问URL参数(?键=值) web.input 对象,使用 web.input().key .
GET¶
一个看起来像 /page?id=1&action=edit ,你会的
class Page(object):
def GET(self):
data = web.input()
id = int(data.id) # all the inputs are now strings. Cast it to int, to get integer.
action = data.action
...
KeyError 如果出现以下情况,则引发异常 key 在URL参数中没有。网页.py使用默认值网络输入().
class Page(object):
def GET(self):
data = web.input(id=1, action='read')
id, action = int(data.id), data.action
...
POST¶
它的工作方式与POST方法完全相同。如果你有表格 name 和 password 元素,你会的
class Login(object):
def POST(self):
data = web.input()
name, password = data.name, data.password
...
多个同名输入¶
如果你有一个 /page?id=1&id=2&id=3 或者你有一个有多重选择的表单?会怎样 web.input().id 给我们?它只是吞没了所有的价值,只有一个价值。但是让网络输入()知道我们期望更多的同名值很简单。就这样过去 [] 作为该名称的默认参数。
class Page(object):
def GET(self):
data = web.input(id=[])
ids = data.id # now, `ids` is a list with all the `id`s.
...
文件上传¶
上传文件很容易网页.py. web.input() 也会处理好的。只需确保上传表单具有属性enctype=“multipart/formdata”。这个 input() 给你 filename 和 value ,分别是上传的文件名和内容。为了让事情更简单,它也给你 file ,一个类似文件的对象 myfile={{}} 在哪里? myfile 是表单中输入元素的名称。:
class Upload(object):
def GET(self):
return render.upload()
def POST(self):
data = web.input(myfile={})
fp = data.myfile
save(fp) # fp.filename, fp.read() gives name and contents of the file
...
或
class Upload(object):
...
def POST(self):
data = web.input() # notice that `myfile={}` is missing here.
fp = data.myfile
save(fp.filename, fp.value)
...