Pylons FormEncode @validate装饰器将参数传递给重新渲染动作

时间:2010-01-13 17:30:08

标签: pylons decorator validation formencode

我试图在Pylons中使用带有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传回,或者我是否需要使用其他方法来实现我尝试做的事情?

2 个答案:

答案 0 :(得分:2)

我认为问题是add_question()没有收到id参数。尝试设置您的路由,以便add_question()不仅可以在POST变量中接收它,还可以作为参数接收它,并查看它是否解决了问题。

答案 1 :(得分:1)

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