Merhaba bu yazıda Flask’ta WTForm konusuna bakacağız.
Bu yazıya geçmeden önce bir önceki yazıyı ziyaret edebilirsiniz, https://ittutorial.org/python-flask-jinja2/
WTForm, flask’ta HTML yapısı kullanmadan form oluşturmamıza olanak sağlar, bu form yapılarını python class’ları kullanarak oluştururuz. Örnek ile devam edelim.
Python dosyamızı oluşturalım ve Flask için gerekli olan minimum kod kısmını hazırlayalım.
from flask import Flask, render_template app = Flask(__name__)
Flask uygulamasını tanımladık ve kütüphaneyi ekledik. Şimdi WTForm kütüphanesini ekleyelim ve Oluşturacağımız form için form class’ını oluşturalım.
from wtforms import StringField, SubmitField from wtforms.validators import DataRequired app.config["SECRET_KEY"] = "SECRETKEY" class WTForm(FlaskForm): isim = StringField("isim") soyisim = StringField("soyisim") submit = SubmitField(label=("Gönder"), validators=[DataRequired()])
Burada isim soyisim, ve submit değişkenlerine wtforms içerisindeki veri türlerini işaret ettik. Yani isim soyisim dediğimiz yerler string türünde input alacak, submit ise formu göndermek için oluşturduğumuz submit butonu.
app.config
kısmı formu oluşturmak için gerekli olan bir ayardır, burada “SECRETKEY” yazan kısma istediğimiz şekilde isim verebiliriz.
Bu formu hangi url’den çağıracaksak gerekli kod kısmını yazalım.
@app.route("/form", methods=["GET", "POST"]) def formTest(): form = WTForm() if form.validate_on_submit(): return "Hello {} {}".format(form.isim.data, form.soyisim.data) return render_template("form.html", form=form)
method kısmında hem GET, hemde POST kullandık, çünkü form classı tarayıcımıza gelirken get isteği ile çağırılıcak, ancak formdan gelen değerleri ekrana yazarken bu işlemi POST ile yapacağız.
Yukarıda oluşturduğumuz class’tan nesne oluşturuyoruz. validate_on_submit()
ile buton tıklandığında yapılacak işlemleri yazıyoruz.
Burada formdan gelen isim ve soy isim verilerinin içeridi .data ile alıp ekrana yazacağız.
En altta ise /form
url’ine gittiğimizde oluşturduğumuz formu göstermesi için bir HTML dosyası hazırladık. Şimdi onun içeriğine göz atalım.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Form</title> </head> <body> <form method="POST"> {{ form.csrf_token() }} <label>{{ form.isim.label }}</label> {{ form.isim }} <label>{{ form.soyisim.label }}</label> {{ form.soyisim }} {{ form.submit }} </form> </body> </html>
form’u oluşturduk bir önceki yazıda bahsettiğimiz Jinja ifadelerini kullanmış olduk.
Şimdi uygulamayı çalıştıralım ve "/form"
adresine gidelim.
İsim ve soyisim’i yazdıktan sonra gönder butonuna tıklayalım
Herşey yolunda gözüküyor, bir sonraki yazıda görüşmek üzere.
Flask Eğitimleri için aşağıdaki bağlantıyı ziyaret edebilirsiniz,
https://denizparlak.net/python-flask-egitim/