Pylons FormEncode @validate decorator pass parameters into re-render action

自作多情 提交于 2020-01-14 04:15:29

问题


I am attempting to use the validate decorator in Pylons with FormEncode and I have encountered an issue. I am attempting to validate a form on a controller action that requires parameters, and if the validation fails, the parameters aren't passed back in when the form is re-rendered. Here's an example.

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')

This is the controller action that contains my form. The form will add questions to an existing question set, which is identified by id. My add question controller action looks like this:

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

Now, if the validation fails FormEncode attempts to redisplay the question_set form, but it does not pass the id parameter back in, so the question set form will not render. Is it possible to pass the id back in with the @validate decorator, or do I need to use a different method to achieve what I am attempting to do?


回答1:


I think the problem is that add_question() doesn't receive id argument. Try to set up your routing so that add_question() receives it not only in POST vars but also as argument and see if it fixes the issue.




回答2:


I had a similar issue. I adjusted my route to include the id and it worked.



来源:https://stackoverflow.com/questions/2058848/pylons-formencode-validate-decorator-pass-parameters-into-re-render-action

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!