0

我正在尝试在我的本地主机上实现此代码:

def form_a():
   form = SQLFORM(db.registration, deletable=True, request.args(0), upload=URL(r=request, f='download'))
   if form.accepts(request.vars, session):
       if not form.record:
           response.flash = "Your input data has been submitted."
       else:
           if form.vars.delete_this_record:
               session.flash = "User record successfully deleted."
           else:
               session.flash = "User record successfully updated."
           redirect(URL(r=request, f='form_a’))
   records = db().select(db.registration.ALL)
   return dict(form=form, records=records)

但是在这一行的关键字 arg 错误之后,我得到了一个非关键字 arg :

   form = SQLFORM(db.registration, deletable=True, request.args(0), upload=URL(r=request, f='download'))

在此行扫描文字错误时出现EOL:

redirect(URL(r=request, f='form_a’))

我正在使用 Python 3 和 Web2Py 2.4.6,谢谢。

4

3 回答 3

2

您有一个非关键字参数:

form = SQLFORM(db.registration, deletable=True, request.args(0), upload=URL(r=request, f='download'))
                                                ^^^^^^^^^^^^^^^

在关键字参数之后:

form = SQLFORM(db.registration, deletable=True, request.args(0), upload=URL(r=request, f='download'))
                                ^^^^^^^^^^^^^^

您要么必须制作deletable非关键字参数,要么必须制作request.args(0)关键字参数。

至于第二个错误,这里的这句话实际上并不是结束语:

redirect(URL(r=request, f='form_a’))
                                 ^

注意它是如何卷曲的。将其替换为常规单引号。

于 2013-05-12T02:41:59.480 回答
1

所有位置参数都必须在关键字参数之前,因此这里request.args(0)会导致错误,因为deletable=True关键字参数是在它之前传递的。

form = SQLFORM(db.registration, deletable=True, request.args(0), upload=URL(r=request, f='download'))

文档

在函数调用中,关键字参数必须跟在位置参数之后。传递的所有关键字参数必须与函数接受的参数之一匹配,它们的顺序并不重要。

并且在 redirect(URL(r=request, f='form_a’))您使用不同类型的开始和结束引号时。

它必须是f='form_a'f="form_a"

于 2013-05-12T02:43:13.787 回答
0

在:

form = SQLFORM(db.registration, deletable=True, request.args(0), upload=URL(r=request, f='download')),

在关键字参数之后,您有deletable=True, request.args(0)一个非关键字参数。这不是有效的语法..

并且在redirect(URL(r=request, f='form_a’))

redirect(URL(r=request, f='form_a’))
                                 ^ This is not what you want..
redirect(URL(r=request, f='form_a'))
                                 ^ This IS what you want..
于 2013-05-12T02:57:43.923 回答