1

我正在尝试将 Pylons 中的 validate 装饰器与 FormEncode 一起使用,但遇到了一个问题。我正在尝试在需要参数的控制器操作上验证表单,如果验证失败,则在重新呈现表单时不会将参数传回。这是一个例子。

def question_set(self, id):
    c.question_set = meta.Session.query(QuestionSet).filter_by(id=id).first()
    c.question_subjects = meta.Session.query(QuestionSubject).order_by(QuestionSubject.name).all()
    return render('/derived/admin/question_set.mako')

这是包含我的表单的控制器操作。该表单会将问题添加到由 id 标识的现有问题集中。我的添加问题控制器操作如下所示:

@validate(schema=QuestionForm(), form='question_set', post_only=True)
def add_question(self):
    stuff...

现在,如果验证失败,FormEncode 会尝试重新显示 question_set 表单,但它不会将 id 参数传回,因此不会呈现问题集表单。是否可以使用 @validate 装饰器将 id 传回,或者我是否需要使用不同的方法来实现我想要做的事情?

4

2 回答 2

2

我认为问题在于add_question()没有收到id论据。尝试设置您的路由,以便add_question()不仅在 POST vars 中接收它,而且还作为参数接收它,看看它是否解决了问题。

于 2010-01-15T14:54:30.023 回答
1

我有一个类似的问题。我调整了路线以包含 id 并且它有效。

于 2012-01-12T15:36:13.453 回答