wtForms, Register Form

Kategori: Python / Flask , 17 Eylül 2019 , JanFranco


wtforms kütüphanesini kullanarak Flask ortamında formlar oluşturabiliriz. Kütüphane elimizde yoksa pip komutu ile indirip kurabiliriz:


pip install Flask-WTF
Bu yazımda basit bir örnek yapacağız. wtForms hakkında daha ayrıntılı bilgi için aşağıdaki dökümanları inceleyebilirsiniz:


http://flask.pocoo.org/docs/1.0/patterns/wtforms/
https://wtforms.readthedocs.io/en/stable/
https://flask-wtf.readthedocs.io/en/stable/quickstart.html#validating-forms
İlk olarak ana dosyamızda wtforms kütüphanesinden gerekli sınıfları import edelim:


from wtforms import Form, StringField, TextAreaField, PasswordField, validators
RegisterForm adında bir sınıf oluşturalım. Bu sınıf Form sınıfını miras alacak:


class RegisterForm(Form):
    name = StringField("Name Surname: ", validators=[validators.Length(min=4, max=25)])
    username = StringField("Username: ", validators=[validators.Length(min = 4, max = 25)])
    password = PasswordField("Password: ", validators=[validators.EqualTo(fieldname = "confirm", message = "Passwords does not match!")])
    confirm = PasswordField("Password Confirm: ")
    email = StringField("E-Mail: ", validators=[validators.Length(min=4, max=40), validators.Email(message="Enter a valid e-mail!")])
Ad - soyad, kullanıcı adı, şifre, şifre doğrulama ve e-mail alanları oluşturduk. Şimdi index fonksiyonunda bu sınıftan bir obje türetelim index.html dosyasına bu objeyi gönderelim:


@app.route("/")
def index():
    form = RegisterForm()
    return render_template("index.html", form = form)
includes klasöründe form_helpers.html adında bir dosya oluşturalım ve içeriğini şu şekilde oluşturalım:


{% macro render_field(field) %}
  <dt>{{ field.label }}</dt>
  <dd>{{ field(**kwargs)|safe }}
  {% if field.errors %}
    <ul class=errors>
    {% for error in field.errors %}
      <li>{{ error }}</li>
    {% endfor %}
    </ul>
  {% endif %}
  </dd>
{% endmacro %}
index.html dosyamızın en üstünde bu form_helpers.html dosyasındaki render_field fonksiyonunu import edelim:


{% from "includes/form_helpers.html" import render_field %}
Son olarak body bloğunda formumuzu oluşturalım:


<form method = "post">
    {{ render_field(form.name, class = "form-control") }}
    {{ render_field(form.username, class = "form-control") }}
    {{ render_field(form.email, class = "form-control") }}
    {{ render_field(form.password, class = "form-control") }}
    {{ render_field(form.confirm, class = "form-control") }}
    <button type="submit" class="btn btn-primary">Register</button>
</form>
Ana sayfamızın son hali:

Flask wtforms


Sonraki Yazı: GET, POST, Register Page
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın