📜  TurboGears¢验证(1)

📅  最后修改于: 2023-12-03 15:35:23.111000             🧑  作者: Mango

TurboGears验证

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

在这个控制器中,我们有两个方法: loginpost_loginlogin 方法返回一个模板,以显示登录表单。 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装饰器可以轻松地实现验证,而在模板中使用错误消息,则允许您向用户显示有关表单错误的相关信息。