Introduction to FlyForms¶
Concept¶
There are main concepts of FlyForms. It based on
- Validators that check certain properties of the obtained data.
- Fields represent a set of rules to data validation via set of
Validator
instances. - Form is the core container of FlyForms. Forms represent a collection of
Field
instances.
Quickstart¶
Defining Forms¶
Let’s define our first form right away:
from flyforms.form import Form
from flyforms.fields import EmailField, StringField
class LoginForm(Form):
email = EmailField()
password = StringField(
min_length=8,
regex=r"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])",
max_length=64
)
When you create a form, you define the fields by the defining class variables for Form
subclass
which are instantiations of the fields.
In this example, we have defined the authorization form consists of two fields which represent user email and password.
Extending Forms¶
As a normal Python object Forms have inheritance. So, if you need to extend your form you can easily do it:
class RegistrationForm(LoginForm):
first_name = StringField(
regex=r"^[A-Z].*$",
min_length=3,
max_length=64
)
last_name = StringField(
regex=r"^[A-Z].*$",
min_length=3,
max_length=64
)
Via subclassing, RegistrationForm
has all fields defined in LoginForm
and it’s own.
So you easily share common fields between forms.
Using Forms¶
Using a Forms is as simple as their definition. Let’s see an usage example for LoginForm
we defined earlier:
form = LoginForm(
email="qwerty@gmail.com",
password="Qwerty_#123"
)
print(form.is_valid) # >>> True
print(form.errors) # >>> {}
print(form.password) # >>> Qwerty_#123
print(form.email) # >>> qwerty@gmail.com
First, we instantiate the Form
, providing it with data.
While instantiation given data pass validation using defined fields validators.
By the way, all the fields in the form are required, by default. You need to pass required=False to field’s
constructor if you want to discard it.
If the Form
is submitted with wrong data, we get the following:
# coding=utf-8
from flyforms.form import Form
from flyforms.fields import EmailField, StringField
class LoginForm(Form):
email = EmailField()
password = StringField(
min_length=8,
regex=r"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])",
max_length=64
)
class RegistrationForm(LoginForm):
first_name = StringField(
regex=r"^[A-Z].*$",
min_length=3,
max_length=64
)
last_name = StringField(
regex=r"^[A-Z].*$",
min_length=3,
max_length=64
)
if __name__ == '__main__':
form = LoginForm(
email="qwerty@gmail.com",
password="Qwerty_#123"
)
print(form.is_valid) # >>> True
print(form.errors) # >>> {}
print(form.password) # >>> Qwerty_#123
print(form.email) # >>> qwerty@gmail.com
Further reading¶
For more information about FlyForms see FlyForms reference.