我需要deform中这个自定义验证的"request“才能工作:
def d_validator(node, value):
if not value:
raise Invalid(node, 'Enter a Password')
if len(value) < 5:
raise Invalid(node, 'Invalid Length')
userid = authenticated_userid(userrequest)
dbsession = DBSession()
userInfo = dbsession.query(User).filter(_and(User.id==userid, User.password == value)).first()
if not userInfo:
raise Invalid(node, 'Invalid password')所以我试了一下:
class Form(field.Field):
def __init__(self, schema, **kw):
self.saved_user = kw.pop('userrequest')
log.info(self.saved_user)
super(Form, self).__init__(schema, **kw)然后:
Form(schema, buttons=('Actualizar',), 'userrequest'=request)但是我得到了关键字:SyntaxError不能是一个表达式
我知道这可能与python有关,请耐心等待,提前谢谢。
发布于 2012-07-18 03:27:25
关键字确实不是表达式,但'userrequest'=request是。删除引号:
Form(schema, buttons=('Actualizar',), userrequest=request)另外,为什么您的自定义Form类基于field.Field?我自己还没有用过deform,但是快速浏览一下documentation就会强烈建议你应该继承deform.Form。
最后但并非最不重要的一点是,您可以转而使用pyramid thread-local request:
def d_validator(node, value):
if not value:
raise Invalid(node, 'Enter a Password')
if len(value) < 5:
raise Invalid(node, 'Invalid Length')
userid = authenticated_userid(get_current_request())
dbsession = DBSession()
userInfo = dbsession.query(User).filter(_and(User.id==userid, User.password == value)).first()
if not userInfo:
raise Invalid(node, 'Invalid password')是的,这通常是不受欢迎的,但在您的情况下可能更容易处理。
https://stackoverflow.com/questions/11529444
复制相似问题