如何在最初呈现表单的同一个控制器操作中验证它?

2024-10-03 06:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下控制器:

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请求.POST=='POST'检查表单是否已提交?在

我尝试了一下,并将@validate decorator移到form操作,但它给了我一个WSOD,服务器停止服务:

^{pr2}$

有没有一种方法可以让一个操作仍然使用validatedecorator?在


Tags: selfform表单datereturnemailformatterdef
1条回答
网友
1楼 · 发布于 2024-10-03 06:28:08

我真傻,很简单。我的代码是:

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

相关问题 更多 >