Maison  >  Article  >  développement back-end  >  Application Flask (traitement de formulaire) en python

Application Flask (traitement de formulaire) en python

不言
不言avant
2018-11-15 14:42:013360parcourir

Le contenu de cet article concerne l'application flask (traitement de formulaire) en Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

1.Pourquoi utiliser Flask-WTF ?

L'objet de requête expose toutes les informations de requête envoyées par le client. En particulier, request.form a accès aux données du formulaire soumises par les requêtes POST.
Bien que le support fourni par l'objet de requête de Flask soit suffisant pour gérer les formulaires Web, de nombreuses tâches deviennent encore monotones et répétitives.
La génération de code HTML de formulaire et la validation des données du formulaire soumis sont deux bons exemples.

Avantages :

L'extension Flask-WTF rend le traitement des formulaires Web une expérience plus agréable. Cette extension est une intégration Flask qui enveloppe le package WTForms indépendant du framework.

2. Qu'est-ce que le traitement des formulaires ?

Dans une page Web, certains formulaires doivent toujours apparaître afin d'interagir avec les utilisateurs.
Flask a conçu la bibliothèque de formulaires WTForm pour faciliter la gestion et l'exploitation des données de formulaire par Flask.

Les concepts les plus importants dans WTForm sont les suivants :

1). Classe Form, les formulaires définis par le développeur doivent hériter de la classe Form ou de ses sous-classes.
La fonction principale de la classe Form est de fournir un accès rapide aux données du formulaire via la classe Field qu'elle contient.

2). Diverses classes Field, à savoir les champs. De manière générale, chaque classe Field correspond à une balise HTML d'entrée.
Par exemple, certaines classes Field fournies avec WTForm, telles que BooleanField, correspondent à ,
SubmitField correspond à , etc.

3). Classe de validateur. Cette classe est utilisée pour vérifier la validité des données saisies par l'utilisateur.
Par exemple, le validateur de longueur peut être utilisé pour vérifier la longueur des données d'entrée,
FileAllowed vérifie le type de fichiers téléchargés, etc.

De plus, afin d'empêcher les attaques csfr (cross-site request forgery), flask nécessite que l'application définisse secret_key par défaut avant d'utiliser flask-wtf. Le moyen le plus simple de le configurer consiste à utiliser app.config['SECRET_KEY'] = 'xxxx'.

3. Classes de champ commun

Champ de mot de passe PasswordField, convertit automatiquement l'entrée en petits points noirs

Champ de texte DateField, le format requis est datetime . la date est la même

Champ de texte IntergerField, l'exigence de format est un entier

Champ de texte DecimalField, l'exigence de format est la même que decimal.Decimal

Champ de texte FloatField, la valeur est un nombre à virgule flottante

BooleanField   Case à cocher, la valeur est True ou False

RadioField   Un ensemble de cases de boutons radio

SelectField   Liste déroulante, elle devrait Il convient de noter que le paramètre choix détermine les options déroulantes, mais il est différent de Comme la balise

MultipleSelectField Une liste déroulante avec plusieurs valeurs disponibles

Fonction de vérification du validateur

Le validateur est une fonction de vérification qui lie un champ à un fonction de vérification Ensuite, Flask effectuera une vérification sur les données avant de recevoir les données dans le formulaire. Si la vérification réussit, les données seront reçues. La fonction de vérification du validateur est la suivante. Des validateurs spécifiques peuvent nécessiter différents paramètres. Voici seulement quelques paramètres couramment utilisés. Pour une utilisation plus détaillée, veuillez vous référer au code source du fichier wtforms/validators.py. classe de validateur :

*Fondamentalement, chaque validateur a un paramètre de message, qui indique quel message est affiché lorsque les données d'entrée ne répondent pas aux exigences du validateur.

Email Pour vérifier la légitimité de l'adresse email, le modèle régulier requis est ^.+@(12+)$

EqualTo Comparez les deux La valeur d'un champ, généralement utilisée dans des scénarios tels que la saisie d'un mot de passe deux fois. Vous pouvez écrire le paramètre fieldname, mais notez qu'il s'agit d'une variable chaîne pointant vers le nom d'un autre champ sous la même forme

.

IPAddress Vérifiez l'adresse IPv4, les paramètres par défaut ipv4=True, ipv6=False. Si vous souhaitez vérifier ipv6, vous pouvez définir ces deux paramètres à l'envers.

Longueur Vérifiez la longueur de la chaîne d'entrée Vous pouvez avoir deux paramètres min et max pour indiquer les limites inférieure et supérieure de la longueur à définir. Notez que le type de paramètre est une chaîne, pas INT !!

NumberRange Pour vérifier si le nombre saisi est dans la plage, vous pouvez avoir deux paramètres, min et max, pour indiquer les limites supérieure et inférieure du nombre. Notez que le type de paramètre est une chaîne, pas INT. !! Ensuite, vous pouvez définir %(min)s et %( dans le paramètre de message de ce validateur max)s deux parties de formatage pour indiquer au front-end quelle est cette plage. D'autres validateurs ont également des astuces similaires, vous pouvez vous référer au code source.

Facultatif Ignorer les autres fonctions de validation dans le même champ lorsqu'il n'y a pas de valeur d'entrée

Obligatoire Champ obligatoire

Regexp Utiliser une expression régulière pour vérifier la valeur, paramètre regex='regular motif'

URL Vérifiez l'URL, le modèle régulier requis est ^[a-z]+://(?P3+)(?P:[0-9]+) ? ( ?P/.*)?$

 AnyOf  Assurez-vous que la valeur est dans la liste des valeurs facultatives. Les paramètres sont des valeurs (une liste de valeurs facultatives). En particulier, lorsqu'il est utilisé conjointement avec SelectField, je ne sais pas pourquoi la valeur des éléments dans les choix de SelectField ne peut pas être un nombre. . Sinon, même s'il y a des nombres pertinents dans le paramètre valeurs d'AnyOf, il ne peut pas être reconnu que l'option actuelle est une option légale. Je soupçonne que NoneOf peut avoir le même truc.

NoneOf Assurez-vous que la valeur ne figure pas dans la liste des valeurs facultatives

#forms.py文件:用来设定规则
from flask_wtf import FlaskForm
from flask_wtf.file import FileRequired, FileAllowed
from wtforms import StringField, PasswordField, SubmitField, FileField
from wtforms.validators import DataRequired, Length


class LoginForm(FlaskForm):
    name = StringField(
        label="用户名/邮箱/手机号",
        validators=[
            # DataRequired("请输入用户名"),
            Length(3, 20, message="长度不符"),
        ]
    )
    passwd = PasswordField(
        label="密码",
        validators=[
            # DataRequired("请输入密码"),
            Length(3, 20),
        ], )

    file = FileField(
        label="简历",
        validators=[
            FileRequired(),
            FileAllowed(['pdf', 'txt'], 'pdf 能被接收')
        ]
    )
#templates/demo/login.html
nbsp;html>


    <meta>
    <title>Title</title>


    {{ form.hidden_tag() }}     {{ form.name.label }} {{ form.name }}     {{ form.passwd.label }} {{ form.passwd }}     {{ form.file }}     
#主程序
import random
from flask import Flask, redirect, render_template
from forms import LoginForm
from flask_bootstrap import  Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config['SECRET_KEY'] =  random._urandom(24)

@app.route('/success/')
def success():
    return  "success"

@app.route('/login/', methods=('GET', 'POST'))
def submit():
    # 实例化表单对象;
    form = LoginForm()
    if form.validate_on_submit():
        print(form.data)
        return redirect('/success/')
    return render_template('demo/login.html', form=form)
app.run()

Application Flask (traitement de formulaire) en python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer