2013-05-12 92 views
0

我想实现在我的本地验证码:web2py的语法错误非关键字精氨酸后关键字精氨酸

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,谢谢。

回答

1

所有的位置参数必须在关键字参数之前出现,因此这里request.args(0)正在导致错误,因为deletable=True之前的关键字参数已经通过。

形式= SQLFORM(db.registration,可删除=真,request.args中(0), 上传= URL(R =请求中,f = '下载'))

docs

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

而在redirect(URL(r=request, f='form_a’))中,您正在使用不同类型的开盘和闭盘报价。

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

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’)) 
           ^

注意它是如何的卷曲。用一个普通的单引号替换它。

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.. 
相关问题