Flask-WTF ialah pakej Python yang direka untuk memudahkan aplikasi rangka kerja Flask menggunakan borang. Ia menyediakan antara muka yang ringkas namun berkuasa untuk menambahkan borang pada aplikasi Flask dengan mudah. Menggunakan Flask-WTF, anda boleh mengesahkan dan memproses data borang dengan mudah serta menambah pengesah dan medan tersuai pada borang anda. Artikel ini akan memperkenalkan cara menggunakan Flask-WTF untuk menambah borang pada aplikasi Flask.
Pasang Flask-WTF
Mula-mula, anda perlu memasang pakej Flask-WTF. Ia boleh dipasang menggunakan pip:
pip install Flask-WTF
Mencipta aplikasi Flask
Sebelum anda mula menambah borang, anda perlu mencipta aplikasi Flask. Berikut ialah contoh aplikasi Flask mudah:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!'
Untuk aplikasi yang lebih kompleks, lebih banyak konfigurasi dan persediaan mungkin diperlukan.
Buat kelas borang
Flask-WTF menggunakan kelas borang untuk menerangkan medan borang. Kelas borang diperoleh daripada kelas FlaskForm
yang disediakan dalam Flask-WTF. Dalam kelas borang, anda boleh menentukan medan borang, pengesah dan sifat lain. Berikut ialah beberapa jenis medan bentuk asas:
Berikut ialah contoh kelas bentuk mudah:
from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired class NameForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) submit = SubmitField('Submit')
Dalam contoh di atas, kelas borang NameForm
mengandungi medan rentetan bernama name
dan butang Hantar nama untuk submit
. Medan rentetan ditakrifkan menggunakan StringField
jenis dan DataRequired
pengesah. DataRequired
Pengesah memastikan bahawa nilai medan tidak kosong.
Dalam kelas borang, anda juga boleh menentukan pengesah tersuai. Sebagai contoh, berikut ialah pengesah tersuai yang memastikan nilai yang dimasukkan oleh pengguna kurang daripada 50 aksara:
from wtforms import ValidationError class LengthValidator(object): def __init__(self, max_chars): self.max_chars = max_chars def __call__(self, form, field): if len(field.data) > self.max_chars: raise ValidationError('Value must be less than {} characters'.format(self.max_chars)) class NameForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), LengthValidator(50)]) submit = SubmitField('Submit')
Dalam contoh di atas, pengesah LengthValidator
ditakrifkan. Pengesah dimulakan dengan parameter panjang maksimum dan menyemak sama ada panjang medan input melebihi panjang maksimum. Dalam definisi medan rentetan, tambahkan pengesah LengthValidator
pada senarai pengesah untuk memastikan nilai atributnya berada di bawah 50 aksara.
Dalam kelas borang, anda juga boleh menentukan sifat lain, seperti kelas CSS untuk digunakan semasa memaparkan medan. Sifat ini boleh digunakan untuk menyesuaikan rupa dan rasa medan bentuk.
Menggunakan Borang
Untuk menggunakan borang dalam aplikasi Flask, anda perlu mencipta contoh borang dalam fungsi paparan. Contoh borang boleh dibuat daripada kelas borang dan dihantar ke templat. Berikut ialah contoh fungsi paparan:
from flask import render_template from app import app from forms import NameForm @app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): name = form.name.data return render_template('index.html', name=name) return render_template('index.html', form=form)
Dalam contoh di atas, fungsi pandangan index
mencipta contoh borang form
. Jika borang diserahkan, dan pengesahan berjaya, dapatkan nama daripada borang yang diserahkan dan hantarkannya ke templat. Paparkan borang jika ia belum diserahkan atau pengesahan gagal.
Dalam templat, anda boleh menggunakan fungsi pemaparan borang yang disediakan oleh Flask-WTF untuk memaparkan borang. Berikut ialah contoh templat mudah, menggunakan enjin templat Jinja2 dan penggayaan Bootstrap:
<!doctype html> <html> <head> <title>Flask-WTF Example</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css"> </head> <body> <div class="container"> <h1>Hello {{ name }}!</h1> <form method="post"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name }} {% for error in form.name.errors %} <span>{{ error }}</span> {% endfor %} {{ form.submit }} </form> </div> </body> </html>
Dalam templat, gunakan objek form
untuk memaparkan medan borang dan butang hantar. Medan csrf_token
ialah medan tersembunyi yang digunakan untuk menghalang serangan pemalsuan permintaan merentas tapak.
Ringkasan
Menggunakan Flask-WTF, anda boleh menambah borang dengan mudah pada aplikasi Flask anda. Menggunakan kelas borang, anda boleh membuat medan borang tersuai dan pengesah. Dalam fungsi paparan, anda boleh mencipta contoh borang dan membuat borang menggunakan enjin templat. Flask-WTF juga menyediakan ciri lain seperti muat naik fail, sarang borang dan prapemprosesan borang. Memahami keupayaan Flask-WTF boleh menjadikan pemprosesan borang dalam aplikasi Flask lebih mudah dan cekap.
Atas ialah kandungan terperinci Flask-WTF: Menambah borang pada aplikasi Flask anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!