首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带参数的Web2py控制器?

带参数的Web2py控制器?
EN

Stack Overflow用户
提问于 2010-06-09 14:12:10
回答 3查看 10.3K关注 0票数 10

我正在使用Web2py框架构建一个应用程序...我不想使用请求对象来获取所有的查询字符串参数,相反,我想用命名参数构建我的控制器,并让路由器将查询字符串(或表单数据)字典解压到命名参数中,然后调用我的控制器。

因此,不使用控制器方法

代码语言:javascript
运行
复制
create_user():

其中我将使用全局request()对象并查看vars列表...相反,我更倾向于

代码语言:javascript
运行
复制
create_user(first_name, last_name, email):

就像我在其他MVC平台中看到的那样。

这在Web2py中已经可以实现了吗?或者它有一个插件吗?或者我需要自己添加吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-09 15:19:55

不是的。如book中所述,表单的URL

代码语言:javascript
运行
复制
http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2

映射到应用程序(文件夹) a、控制器(文件) c.py、函数f,并且必须将请求对象中的附加参数解压为

代码语言:javascript
运行
复制
x, y, z = tuple(request.args)
p = request.vars['p'] # p=1
q = request.vars['q'] # q=2 

此外,web2py专门将有效的控制器函数检测为没有参数的函数。AFAICR,这与Django相反,Django将有效的控制器函数检测为至少有一个参数的函数。

票数 11
EN

Stack Overflow用户

发布于 2010-06-09 23:44:02

我知道

代码语言:javascript
运行
复制
def create_user():
    try:
        first_name, last_name, email = request.args[:3]
    except:
        redirect('some_error_page')

但请注意,first_name、last_name和电子邮件可能包含path_info中不允许的字符(在仅验证\w-时,使用picky中的web2py。是允许的)。

票数 2
EN

Stack Overflow用户

发布于 2013-06-17 21:59:30

在某些情况下,web2py控制器可以使用参数。当控制器函数具有@service修饰符时,可以使用参数,具体取决于服务类型,例如:

代码语言:javascript
运行
复制
@service.jsonrpc
def somefunction(a=None, b='default'):
    ## whatever

这种方法适用于控制器函数实际上是一个API,而不是生成web视图的方法。在并行定义web-view和API风格的函数,让web视图调用API函数方面,你可以做一些很好的事情,以确保你有一个良好的视图和控制器的分离。

根据您选择如何在web client / javascript、web2py视图和web2py控制器之间划分职责,拥有真正的API(带有可选参数)的控制器功能可能是有意义的,而不是在web视图样式的控制器中构建参数解包逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3003449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档