Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Flask-WTF: Menambah borang pada aplikasi Flask anda

Flask-WTF: Menambah borang pada aplikasi Flask anda

WBOY
WBOYasal
2023-06-17 21:50:56932semak imbas

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:

  • StringField: digunakan untuk memasukkan rentetan.
  • IntegerField: digunakan untuk memasukkan integer.
  • BooleanField: digunakan untuk memasukkan nilai Boolean ​​(kotak pilihan).
  • TextAreaField: digunakan untuk memasukkan teks berbilang baris.
  • SelectField: digunakan untuk memilih pilihan dalam menu lungsur.
  • RadioField: untuk butang radio.
  • FileField: digunakan untuk memuat naik fail.

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. DataRequiredPengesah 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn