以下 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 已被弃用。更喜欢 SQLFORMSQLFORM.grid.