Heim  >  Artikel  >  Backend-Entwicklung  >  Flask-Anwendung (Formularverarbeitung) in Python

Flask-Anwendung (Formularverarbeitung) in Python

不言
不言nach vorne
2018-11-15 14:42:013416Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Flaschenanwendung (Formularverarbeitung) in Python. Ich hoffe, dass er für Freunde hilfreich ist.

1. Warum Flask-WTF verwenden?

Das Anforderungsobjekt stellt alle vom Client gesendeten Anforderungsinformationen bereit. request.form hat insbesondere Zugriff auf Formulardaten, die durch POST-Anfragen übermittelt werden.
Obwohl die Unterstützung durch das Anfrageobjekt von Flask für die Handhabung von Webformularen ausreichend ist, gibt es immer noch viele Aufgaben, die monoton und repetitiv werden.
Die Generierung von Formular-HTML-Code und die Validierung übermittelter Formulardaten sind zwei gute Beispiele.

Vorteile:

Die Flask-WTF-Erweiterung macht die Verarbeitung von Webformularen zu einem angenehmeren Erlebnis. Bei dieser Erweiterung handelt es sich um eine Flask-Integration, die das Framework-unabhängige WTForms-Paket umschließt.

2. Was ist Formularverarbeitung?

Auf einer Webseite müssen immer einige Formulare erscheinen, um mit Benutzern zu interagieren, um Informationen zu erhalten.
Flask hat die WTForm-Formularbibliothek entwickelt, um Flask die Verwaltung und Bedienung von Formulardaten zu erleichtern.

Die wichtigsten Konzepte in WTForm sind wie folgt:

1). Form-Klasse, vom Entwickler definierte Formulare müssen von der Form-Klasse oder ihren Unterklassen erben.
Die Hauptfunktion der Form-Klasse besteht darin, über die darin enthaltene Field-Klasse einen schnellen Zugriff auf Daten im Formular zu ermöglichen.

2). Verschiedene Feldklassen, nämlich Felder. Im Allgemeinen entspricht jede Field-Klasse einem Eingabe-HTML-Tag.
Zum Beispiel entsprechen einige der Field-Klassen, die mit WTForm geliefert werden, wie etwa BooleanField, ,
SubmitField entspricht , usw.

3). Diese Klasse wird verwendet, um die Gültigkeit der vom Benutzer eingegebenen Daten zu überprüfen.
Zum Beispiel kann der Längenvalidator verwendet werden, um die Länge von Eingabedaten zu überprüfen,
FileAllowed überprüft den Typ der hochgeladenen Dateien usw.

Um CSFR-Angriffe (Cross-Site Request Forgery) zu verhindern, erfordert Flask außerdem, dass die App vor der Verwendung von Flask-wtf standardmäßig den geheimen Schlüssel festlegt. Die einfachste Möglichkeit zur Konfiguration ist app.config['SECRET_KEY'] = 'xxxx'.

3. Gemeinsame Feldklassen

PasswordField Passwortfeld, wandelt Eingaben automatisch in kleine schwarze Punkte um

DateField Textfeld, die Formatanforderung ist datetime . Datum ist das gleiche

IntergerField-Textfeld, die Formatanforderung ist eine Ganzzahl

DecimalField-Textfeld, die Formatanforderung ist dieselbe wie decimal.Decimal

FloatField-Textfeld, Der Wert ist eine Gleitkommazahl

BooleanField   Kontrollkästchen, der Wert ist wahr oder falsch

RadioField   Eine Reihe von Optionsfeldern

SelectField   Dropdown-Liste, das sollte es sein Beachten Sie, dass der Parameter „Choices“ die Dropdown-Optionen bestimmt, sich jedoch vom

MultipleSelectField Eine Dropdown-Liste mit mehreren verfügbaren Werten

Validator-Verifizierungsfunktion

Validator ist eine Verifizierungsfunktion, die ein Feld an ein Feld bindet Verifizierungsfunktion Anschließend führt Flask eine Verifizierung der Daten durch, bevor die Daten im Formular empfangen werden. Wenn die Verifizierung erfolgreich ist, werden die Daten empfangen. Für die Verifizierungsfunktion „Validator“ sind möglicherweise unterschiedliche Parameter erforderlich. Weitere Informationen zur Verwendung finden Sie im Quellcode der Datei „wtforms/validators.py“. Validator-Klasse:

*Grundsätzlich verfügt jeder Validator über einen Nachrichtenparameter, der angibt, welche Meldung angezeigt wird, wenn die Eingabedaten nicht den Anforderungen des Validators entsprechen.

E-Mail Um die Legitimität der E-Mail-Adresse zu überprüfen, ist das erforderliche reguläre Muster ^.+@(12+)$

EqualTo Vergleichen Sie die beiden Werte eines Felds, die normalerweise in Szenarien wie der doppelten Eingabe eines Kennworts verwendet werden. Sie können den Parameter Feldname schreiben. Beachten Sie jedoch, dass es sich um eine Zeichenfolgenvariable handelt, die auf den Feldnamen eines anderen Felds in derselben Form verweist

IPAddress Überprüfen Sie die IPv4-Adresse, die Parameter sind standardmäßig ipv4=True, ipv6=False. Wenn Sie IPv6 verifizieren möchten, können Sie diese beiden Parameter umgekehrt einstellen.

Länge Überprüfen Sie die Länge der Eingabezeichenfolge. Sie können zwei Parameter min und max angeben, um die Unter- und Obergrenze der festzulegenden Länge anzugeben. Beachten Sie, dass der Parametertyp eine Zeichenfolge und nicht INT ist.

NumberRange Um zu überprüfen, ob die eingegebene Zahl innerhalb des Bereichs liegt, können Sie zwei Parameter, min und max, verwenden, um die Ober- und Untergrenze der Zahl anzugeben. Beachten Sie, dass der Parametertyp eine Zeichenfolge und nicht INT ist !! Dann können Sie %(min)s und %( im Nachrichtenparameter dieses Validators max)s zwei Formatierungsteile festlegen, um dem Frontend mitzuteilen, um welchen Bereich es sich handelt. Andere Validatoren haben ebenfalls ähnliche Tricks, Sie können sich auf den Quellcode beziehen.

Optional Andere Validierungsfunktionen im selben Feld überspringen, wenn kein Eingabewert vorhanden ist

Erforderlich Erforderliches Feld

Regexp Verwenden Sie einen regulären Ausdruck, um den Wert zu überprüfen, Parameter regex='regular Muster'

URL URL überprüfen, das erforderliche reguläre Muster ist ^[a-z]+://(?P3+)(?P:[0-9]+)? ( ?P/.*)?$

 AnyOf  Stellen Sie sicher, dass der Wert in der Liste der optionalen Werte enthalten ist. Die Parameter sind Werte (eine Liste optionaler Werte). Insbesondere bei Verwendung in Verbindung mit SelectField weiß ich nicht, warum der Wert der Elemente in den Auswahlmöglichkeiten von SelectField keine Zahl sein kann. . Andernfalls kann nicht erkannt werden, dass die aktuelle Option eine legale Option ist, selbst wenn der Werteparameter von AnyOf relevante Zahlen enthält. Ich vermute, dass NoneOf den gleichen Trick hat.

NoneOf Stellen Sie sicher, dass der Wert nicht in der Liste der optionalen Werte enthalten ist

#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()

Flask-Anwendung (Formularverarbeitung) in Python

Das obige ist der detaillierte Inhalt vonFlask-Anwendung (Formularverarbeitung) in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen