Пилоны FormEncode @validate передают параметры в действие повторного рендеринга - PullRequest
1 голос
/ 13 января 2010

Я пытаюсь использовать валидатор-декоратор в 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')

Это действие контроллера, которое содержит мою форму. Форма добавит вопросы к существующему набору вопросов, который идентифицируется по идентификатору. Действие контроллера добавления вопроса выглядит следующим образом:

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

Теперь, если проверка не пройдена, FormEncode пытается повторно отобразить форму question_set, но не передает параметр id обратно, поэтому форма набора вопросов не будет отображаться. Можно ли передать идентификатор обратно с помощью декоратора @validate или мне нужно использовать другой метод для достижения того, что я пытаюсь сделать?

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Я думаю, что проблема в том, что add_question() не получает id аргумент. Попробуйте настроить маршрутизацию так, чтобы add_question() получал ее не только в параметрах POST, но и в качестве аргумента, и посмотрите, решит ли она проблему.

1 голос
/ 12 января 2012

У меня была похожая проблема. Я изменил свой маршрут, чтобы включить идентификатор, и это сработало.

...