📅  最后修改于: 2023-12-03 15:35:23.111000             🧑  作者: Mango
TurboGears是一个基于Python的Web应用程序框架,它提供了许多功能来轻松创建Web应用程序。其中之一是内置的验证系统,该系统允许您轻松验证用户输入和数据模型。
TurboGears验证是基于WTForms库的,该库提供了一种简单而灵活的验证系统。
首先,您需要定义一个WTForms表单。例如:
from wtforms import Form, StringField, PasswordField, validators
class LoginForm(Form):
username = StringField('Username', [validators.DataRequired()])
password = PasswordField('Password', [validators.DataRequired()])
这个表单定义了一个用户名和密码字段,这两个字段都需要输入。接下来,您需要创建一个TurboGears控制器,以处理表单提交并执行验证。
from tg import expose, validate, redirect, url
from .forms import LoginForm
class LoginController(object):
@expose('yourapp.templates.login')
def login(self):
return {}
@expose()
@validate(form=LoginForm)
def post_login(self, username, password):
# the code here only executes if the form is valid
redirect(url('/home'))
在这个控制器中,我们有两个方法: login
和 post_login
。 login
方法返回一个模板,以显示登录表单。 post_login
方法处理表单提交并使用 @validate 装饰器来验证输入。
如果表单验证失败,则控制器会自动返回错误消息到表单。如果验证成功,则执行后续处理。在此示例中,我们将用户重定向到主页。
为了让用户了解表单提交过程的错误,我们可以在模板中使用错误消息。为此,您可以使用 TurboGears 提供的错误消息对象。
例如,在上面的代码中,我们可以添加以下代码,将错误消息传递给登录表单:
from tg import tmpl_context
@expose('yourapp.templates.login')
def login(self):
return {'errors': tmpl_context.form_errors}
在此示例中,包含表单的模板可能会像这样:
<form method="post" action="{{ url('/post_login') }}">
{{ form.csrf_token }}
<div>{{ form.username.label }} {{ form.username }}</div>
{% if errors.username %}<div class="error">{{ errors.username }}</div>{% endif %}
<div>{{ form.password.label }} {{ form.password }}</div>
{% if errors.password %}<div class="error">{{ errors.password }}</div>{% endif %}
<div><input type="submit" value="Login"></div>
</form>
此模板在适当的位置添加了错误消息,允许用户轻松地了解表单提交过程中的错误。
TurboGears的内置验证允许您轻松地验证用户输入和数据模型。使用WTForms表单和@validate装饰器可以轻松地实现验证,而在模板中使用错误消息,则允许您向用户显示有关表单错误的相关信息。