Как проверить форму в пилонах в том же действии контроллера, которое изначально ее отображало? - PullRequest
0 голосов
/ 18 сентября 2010

У меня есть следующий контроллер:

class FormtestController(BaseController):

    def form(self):
        return ender('/simpleform.html')

    @validate(schema=EmailForm(state=c), form='form', post_only=False, on_get=True,
              auto_error_formatter=custom_formatter)
    def submit(self):
        return 'Your email is: %s  and the date selected was %r.' % (
            self.form_result['email'],
            self.form_result['date'],
        )

Первое действие предназначено для начального отображения формы, а второе - при отправке формы. Можно ли объединить их и просто использовать if request.POST == 'POST', чтобы проверить, была ли отправлена ​​форма?

Я попробовал и переместил декоратор @validate в действие формы, но он дает мне WSOD, и сервер прекращает обслуживание:

class FormtestController(BaseController):

    @validate(schema=EmailForm(state=c), form='form', post_only=False, on_get=True,
              auto_error_formatter=custom_formatter)
    def form(self):
        if request.method == 'POST':
            return 'Your email is: %s  and the date selected was %r.' % (
                self.form_result['email'],
                self.form_result['date'],
            )
        return render('/simpleform.html')

Есть ли способ выполнить одно действие и при этом использовать валидатор-декоратор?

1 Ответ

1 голос
/ 19 сентября 2010

Глупый я, это было просто. Вот мой код:

class FormtestController(BaseController):

@validate(schema=EmailForm(state=c), form='form', post_only=True,
          on_get=False,
          auto_error_formatter=custom_formatter)
def form(self):
    if request.method == 'POST':
        return 'Your email is: %s  and the date selected was %r.' % (
            self.form_result['email'],
            self.form_result['date'],
        )
    return render('/simpleform.html')
...