以下 web2py 代码如何提供数据库记录创建?
How does the following web2py code provide database record creation?
在 web2py book chapter on Forms and Validators 中,作者指出以下代码:
def manage():
table=db[request.args(0)]
form = crud.update(table,request.args(1))
table.id.represent = lambda id, row: A('edit:',id,_href=URL(args=(request.args(0),id)))
search, rows = crud.search(table)
return dict(form=form,search=search,rows=rows)
让您可以搜索、创建 和编辑任何 table 中传递 table 名称的任何记录 request.args(0)
但是我看不出这段代码可以创建记录。我错过了什么吗?
在下一行中:
form = crud.update(table,request.args(1))
当 URL 在 table 名称后不包含 arg 时,request.args(1)
将 return None
,而 crud.update(table, None)
是等价于crud.create(table)
(其实后者在内部只是简单的调用了前者)
因此,像 /myapp/mycontroller/manage/mytable/5
这样的 URL 将为记录 5 提供更新表单,但 /myapp/mycontroller/manage/mytable
将提供创建表单。
另外,请注意 Crud
已被弃用。更喜欢 SQLFORM
和 SQLFORM.grid
.
在 web2py book chapter on Forms and Validators 中,作者指出以下代码:
def manage():
table=db[request.args(0)]
form = crud.update(table,request.args(1))
table.id.represent = lambda id, row: A('edit:',id,_href=URL(args=(request.args(0),id)))
search, rows = crud.search(table)
return dict(form=form,search=search,rows=rows)
让您可以搜索、创建 和编辑任何 table 中传递 table 名称的任何记录 request.args(0)
但是我看不出这段代码可以创建记录。我错过了什么吗?
在下一行中:
form = crud.update(table,request.args(1))
当 URL 在 table 名称后不包含 arg 时,request.args(1)
将 return None
,而 crud.update(table, None)
是等价于crud.create(table)
(其实后者在内部只是简单的调用了前者)
因此,像 /myapp/mycontroller/manage/mytable/5
这样的 URL 将为记录 5 提供更新表单,但 /myapp/mycontroller/manage/mytable
将提供创建表单。
另外,请注意 Crud
已被弃用。更喜欢 SQLFORM
和 SQLFORM.grid
.