如何在 web2py 中使用 request.vars?
How to use request.vars in web2py?
我想了解 request.vars 在 web2py 中是如何工作的。非常感谢您的帮助。
def one():
x = 5
return dict(x=x)
如果我想在另一个函数中获取变量 x 的值,我应该使用 request.vars 吗?我试过这种方法,当然,它没有用:
def two():
y = request.vars.x
return locals()
request.vars 包含在 HTTP 请求正文中传递的参数(通常是从提交表单派生的 GET 或 POST 请求)。
在您的示例中,定义 x 后,您可以在将 x 传递给名为 value
的变量时从一重定向到二:
redirect(URL('two', vars=dict(value=x)))
然后在两个中你可以通过 request.vars['value']
.
访问 x 的值
这里的文档中有一些额外的细节:http://web2py.com/books/default/chapter/29/04/the-core#request
根据您描述的工作流程,使用 session
存储 x
的值可能最有意义。
在控制器中:
def one():
session.x = 5
return dict()
def two():
y = session.x
return locals()
在 one.html 视图中(以及在任何其他操作的视图中,包括 two
):
{{=session.x}}
使用会话存储需要在单独的 HTTP 请求期间由不同的控制器操作访问的值。 request.vars
只是捕获在 单个 HTTP 请求期间在 URL 查询字符串或 POST 请求正文中传递的值。
如果用户从操作 one
转到操作 two
的方式是单击 one
页面上的 link,则另一种选择是包含值link URL.
的查询字符串中的 x
在控制器中:
def one():
x = 5
return dict(x=x)
在 one.html 视图中:
{{=x}}
<a href="{{=URL('two', vars=dict(x=x))}}">Go to two</a>
然后当用户在 two
函数中单击 link 时,x
的值将在 request.vars.x
中可用(尽管如果 two
页面通过其他方式访问,request.vars.x
将为空)。请注意,此方法不太安全,因为有人可以请求 two
URL 并在查询字符串中传递 x
的任意值。通过使用会话,您可以确保无法更改 x
的值。
因为你的问题不是如何去做,而是关于理解什么request.vars 是我会补充这个:
(来自:http://web2py.com/books/default/chapter/29/04/the-core#Dispatching)- 大约 50 行...
web2py maps GET/POST requests of the form:
http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2
to function f in
controller "c.py" in application a, and it stores the URL parameters
in the request variable as follows:
request.args = ['x', 'y', 'z'] and:
request.vars = {'p':1, 'q':2} and:
request.application = 'a' request.controller = 'c' request.function =
'f' In the above example,
所以,回答你的问题,request.vars
的内容就是只是用来调用URL中查询参数的内容你的控制器功能。
我想了解 request.vars 在 web2py 中是如何工作的。非常感谢您的帮助。
def one():
x = 5
return dict(x=x)
如果我想在另一个函数中获取变量 x 的值,我应该使用 request.vars 吗?我试过这种方法,当然,它没有用:
def two():
y = request.vars.x
return locals()
request.vars 包含在 HTTP 请求正文中传递的参数(通常是从提交表单派生的 GET 或 POST 请求)。
在您的示例中,定义 x 后,您可以在将 x 传递给名为 value
的变量时从一重定向到二:
redirect(URL('two', vars=dict(value=x)))
然后在两个中你可以通过 request.vars['value']
.
这里的文档中有一些额外的细节:http://web2py.com/books/default/chapter/29/04/the-core#request
根据您描述的工作流程,使用 session
存储 x
的值可能最有意义。
在控制器中:
def one():
session.x = 5
return dict()
def two():
y = session.x
return locals()
在 one.html 视图中(以及在任何其他操作的视图中,包括 two
):
{{=session.x}}
使用会话存储需要在单独的 HTTP 请求期间由不同的控制器操作访问的值。 request.vars
只是捕获在 单个 HTTP 请求期间在 URL 查询字符串或 POST 请求正文中传递的值。
如果用户从操作 one
转到操作 two
的方式是单击 one
页面上的 link,则另一种选择是包含值link URL.
x
在控制器中:
def one():
x = 5
return dict(x=x)
在 one.html 视图中:
{{=x}}
<a href="{{=URL('two', vars=dict(x=x))}}">Go to two</a>
然后当用户在 two
函数中单击 link 时,x
的值将在 request.vars.x
中可用(尽管如果 two
页面通过其他方式访问,request.vars.x
将为空)。请注意,此方法不太安全,因为有人可以请求 two
URL 并在查询字符串中传递 x
的任意值。通过使用会话,您可以确保无法更改 x
的值。
因为你的问题不是如何去做,而是关于理解什么request.vars 是我会补充这个: (来自:http://web2py.com/books/default/chapter/29/04/the-core#Dispatching)- 大约 50 行...
web2py maps GET/POST requests of the form:
http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2
to function f in controller "c.py" in application a, and it stores the URL parameters in the request variable as follows:
request.args = ['x', 'y', 'z'] and:
request.vars = {'p':1, 'q':2} and:
request.application = 'a' request.controller = 'c' request.function = 'f' In the above example,
所以,回答你的问题,request.vars
的内容就是只是用来调用URL中查询参数的内容你的控制器功能。