Forms & Validasi dengan Flask-WTF
Penjelasan
Menangani form manual lewat request.form bisa cukup untuk kasus sederhana, tapi untuk validasi kompleks dan proteksi CSRF, komunitas Flask umumnya pakai Flask-WTF (wrapper WTForms). Kamu mendefinisikan form sebagai class yang mewarisi FlaskForm, dengan field seperti StringField, PasswordField, atau SubmitField, masing-masing bisa diberi validators seperti DataRequired() atau Email(). Flask-WTF otomatis menyisipkan CSRF token tersembunyi di form, dan form.validate_on_submit() mengecek sekaligus apakah request adalah POST dan semua validasi lolos.
Contoh Konsep
# pip install flask-wtf
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Length
class ProdukForm(FlaskForm):
nama = StringField('Nama Produk', validators=[DataRequired(), Length(min=3)])
submit = SubmitField('Simpan')
@app.route('/produk/baru', methods=['GET', 'POST'])
def produk_baru():
form = ProdukForm()
if form.validate_on_submit():
return f'Produk {form.nama.data} tersimpan'
return render_template('form_produk.html', form=form)
Praktikum
Lengkapi form KategoriForm agar field 'nama' wajib diisi minimal 3 karakter.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Set app.config['SECRET_KEY'] sebelum pakai Flask-WTF — CSRF token butuh secret key untuk ditandatangani, kalau lupa akan muncul error saat render form.