我有一个类似于以下内容的联系页面控制器:
@expose('project.templates.contacts')
def contact(self, **kw):
return dict( form=contact_form )
提交表格后,使用以下控制器方法验证表格:
@validate(form=contact_form, error_handler=contact)
@expose()
def processContact(self, **kw):
# Do some processing on the contact form
redirect('contact')
这是许多在线教程(例如http://turbogears.org/2.0/docs/main/FormBasics.html)所倡导的设置。
我的问题是提交联系表单时出现错误数据且@validate调用error_handler方法时显示的URL。
即
我正在寻找一种方法(正确的方法?),以防止用户看到“ http:// domain / processContact ”。理想情况下,用户应该只看到“ http:// domain / contact ”。
答案 0 :(得分:0)
[这不是答案,而是更多评论,但对于声誉问题,我不允许添加评论] 你对这个问题的描述对我来说似乎有点模糊。据我所知,用户不会看到“http:// domain / processContact”,因为它的公开中没有任何链接。换句话说,我从你的代码中理解的是: 1-如果表单中出现错误,用户将被重定向到您访问输入输入的联系页面 2-如果成功,用户将被重定向到新的联系页面
我错了,请多说清楚你的问题。
答案 1 :(得分:0)
将联系人页面本身设置为表单操作,为其添加 @validate ,但不提供 error_handler 。如果省略它,而不是调用error_handler,流程会继续,您只需在 tmpl_context.form_errors 中找到错误。
然后在你的控制器内你必须处理三种情况: