web.input

web.input

问题

如何从form或是url参数接受用户数据.

解决方法

web.input()方法返回一个包含从url(GET方法)或http header(POST方法,即表单POST)获取的变量的web.storage对象(类似字典).举个例子,如果你访问页面http://example.com/test?id=10,在Python后台你想取得 id=10 ,那么通过web.input()那就是小菜一碟:

  1. class SomePage:
  2. def GET(self):
  3. user_data = web.input()
  4. return "<h1>" + user_data.id + "</h1>"

有时你想指定一个默认变量,而不想使用None.参考下面的代码:

  1. class SomePage:
  2. def GET(self):
  3. user_data = web.input(id="no data")
  4. return "<h1>" + user_data.id + "</h1>"

注意,web.input()取得的值都会被当作string类型,即使你传递的是一些数字.

如果你想传递一个多值变量,比如像这样:

你需要让web.input知道这是一个多值变量,否则会变成一串而不是一个变量 .传递一个list给 web.input 作为默认值,就会正常工作.举个例子, 访问 http://example.com?id=10&id=20:

  1. class SomePage:
  2. def GET(self):
  3. user_data = web.input(id=[])
  4. return "<h1>" + ",".join(user_data.id) + "</h1>"

译者补充:多值变量这儿,在WEB上除了上面所说的multiple select 和query strings外,用得最多的就是复选框(checkbox)了,另外还有多文件上传时的<input type=”file” …>.