30-05-2017, Saat: 17:13
flask-wtf eklentisi ile form oluşturmak oldukça kolaydır. Her bir web form bir sınıf tarafından tanımlanır ve bu sınıf
Kod:
FlaskForm
veya
Kod:
Form
sınıfından türetilir(bu iki sınıf arasında herhangi bir fark yoktur, sadece yeni versiyonlarda Form ismi FlaskForm ile değiştirilmiştir). Bu sınıfın özellikleri form içerisindeki alanları temsil ederler. Bu alanlar wtforms modülünden import edilerek kullanılırlar, bu alanların her biri bir sınıf tarafından temsil edilir. Ek olarak
Kod:
validators
isminde bir modül vardır. Bu modül sayesinde bir veya birden fazla validator tanımlanabilir. Bu validator'lar kullanıcı tarafından doldurulan alanın valid(geçerli) olup olmadığını kontrol etmek için kullanılır. Örneğin email alanı için doldurulan metin(text)
Kod:
@
karakteri içermelidir vs. flask-wtf eklentisi wtforms kütüphanesi kullanılarak geliştirilmiştir. Bu yüzden flask-wtf yüklendikten sonra "wtforms"da yüklenecektir.
Kod:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class NameForm(FlaskForm):
name = StringField('Enter username', validators=[DataRequired()])
submit = SubmitField('Submit')
basit bir form sınıfı oluşturduk. Field soneki ile biten sınıflar form alanlarını temsil edecek olan sınıflardır. İlk parametreler form alanının üzerinde gösterilecek metindir.
Kod:
validators=[DataRequired()]
ile bu alanın doldurulması zorunlu(required) bir alan olduğunu söylüyoruz.
Kod:
@app.route('/', methods=['GET', 'POST'])
def index():
form = NameForm()
return render_template('index.html', form=form)
#index.html
{% extends 'bootstrap/base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{{wtf.quick_form(form)}}
yukarıdaki örnekte oluşturduğumuz form sınıfından bir nesne türettik bu nesneyi html sayfamıza gönderdik. Html sayfasındaki import satırı
Kod:
flask-bootstrap
eklentisi ile gelen
Kod:
wtf.html
sayfasındaki macroları kullanmamızı sağlayacaktır. Gördüğünüz gibi
Kod:
quick_form()
Kod:
wtf.html
sayfasında tanımlanan bir macrodur. Bizim için form elemanını görüntüleyecektir.