Comment utiliser les formulaires
Autre langages: english | … |
Problème:
Comment utiliser les formulaires ?
Solution:
Le module web.form
fournit un support pour créer, valider et interpréter les formulaires.
Ce module contient une classe Form
et des classes pour diverses entrées de type Textbox
, Password
, etc…
Chaque entrée peut prendre une liste de validateurs comme arguments qui sont validées par rapport à l’entrée lorsque form.validates ()
est appelée.
La classe Form
peut aussi prendre le mot-clé supplémentaire validators
en arguments pour valider le formulaire en utilisant la saisie complète.
Voici un exemple de formulaire d’enregistrement d’un nouvel utilisateur.
import web
from web import form
render = web.template.render('templates') # your templates
vpass = form.regexp(r".{3,20}$", 'must be between 3 and 20 characters')
vemail = form.regexp(r".*@.*", "must be a valid email address")
register_form = form.Form(
form.Textbox("username", description="Username"),
form.Textbox("email", vemail, description="E-Mail"),
form.Password("password", vpass, description="Password"),
form.Password("password2", description="Repeat password"),
form.Button("submit", type="submit", description="Register"),
validators = [
form.Validator("Passwords did't match", lambda i: i.password == i.password2)]
)
class register:
def GET(self):
# do $:f.render() in the template
f = register_form()
return render.register(f)
def POST(self):
f = register_form()
if not f.validates():
return render.register(f)
else:
# do whatever is required for registration
Et le gabarit doit ressembler à ca:
$def with(form)
<h1>Register</h1>
<form method="POST">
$:form.render()
</form>