Python Flask WTForm

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/

 

About Deniz Parlak

Hi, i’m Security Data Scientist & Data Engineer at My Security Analytics. I have experienced Advance Python, Machine Learning and Big Data tools. Also i worked Oracle Database Administration, Migration and upgrade projects. For your questions [email protected]

Leave a Reply

Your email address will not be published. Required fields are marked *