Flask-Login – Hai semuanya masih bersama saya disini, dalam postingan sebelumnya sudah saya posting flask hello world dan lainnya. Kemudian dalam postingan ini saya akan menunjukan cara pembuatan data register di flask atau flask user management authentication.
Pastilah kalau kita ingin login ke dalam aplikasi apa pun tentu kita harus mendaftar terlebih dahulu, entah itu mendaftar menggunakan email, facebook atau apa pun.
Kalau kita tidak punya data register maka kita tidak akan bisa login. Tapi postingan ini hanya akan menggunakan cara register biasa atau sesuai inputan form username dan password jadi tidak menggunakan email atau pun facebook.
Cara Membuat Flask-Login User Management Authentication
Kita perlu melakukan perubahan pada database dalam file models.py seperti berikut:
from app import app, dbclass User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(64), index=True, unique=True)password = db.Column(db.String(64), index=True, unique=True)def __repr__(self):return self.username
Dalam file forms.py kita buat class form untuk membuat form flask karena kita tidak akan menggunakan inputan html biasa, isi file forms.py adalah sebagai berikut:
from flask_wtf import FlaskFormfrom wtforms import StringField, PasswordField, SubmitFieldfrom wtforms.validators import DataRequired, Lengthfrom app.models import Userclass RegisterForm(FlaskForm):username = StringField(“Username”, validators=[DataRequired(), Length(min=3, max=50)])password = PasswordField(“Password”, validators=[DataRequired(), Length(min=6, max=50)])submit = SubmitField(“Kirim”)
Kita buat form register seperti di atas untuk membuat field atau inputan username dan password dan juga tombol submit.
Ketika pengguna memasukan username kurang dari 3 dan password kurang dari 6 huruf maka akan dikembalikan ke halaman register lagi.
Kemudian dalam file views.py juga kita memberikan beberapa perubahan untuk pendaftaran sebagai berikut:
from flask import Flask, render_template, url_for, redirect, request, sessionfrom app import app, dbfrom app.models import Userfrom app.forms import RegisterForm@app.route(“/”, methods=[“GET”, “POST”])@app.route(“/index”, methods=[“GET”, “POST”])def index():form = RegisterForm(request.form)if request.method == “POST” and form.validate_on_submit():username = request.form[“username”]password = request.form[“password”]masukan = User(username=username, password=password)db.session.add(masukan)db.session.commit()return redirect(url_for(‘success’))return render_template(“index.html”, form=form)@app.route(“/success”)def success():return render_template(“success.html”)
Kalau input form kurang dari validasi di file forms.py maka akan kembali ke halaman daftar dan kalau berhasil maka akan menuju ke halaman success.
Sekarang kita ubah file.index.html yang akan digunakan untuk pendaftaran. Isi file index.html yaitu sebagai berikut:
{% extends “base.html” %}{% block content %}<h3>Daftar</h3><form action=” method=’POST’>{{ form.hidden_tag() }}{{ form.username() }}{{ form.password }}{{ form.submit() }}</form>{% endblock %}
Seperti yang kita lihat pada form di atas pertama kita beri {{ form.hidden_tag() }} karena untuk awal pembuatan form flask.
Setelah itu kita memasukan form username, password dan tombol submit yang sudah di buat dalam file forms.py.
Selanjutnya kita menuju ke halaman success.html yang akan digunakan ketika kita berhasil melakukan pendaftaran maka kita akan dialihkan ke halaman success, isi file success.html seperti berikut:
{% extends “base.html” %}{% block content %}<h1>Success</h1>{% endblock %}
Oke selanjutnya setelah selesai semuanya maka kamu bisa membuat database menggunakan perintah python di terminal dengan masuk ke python kemudian ketik seperti berikut:
from app import app, dbfrom app.models import Userdb.create_all()
Database siap digunakan dan sekarang coba jalankan python app.py dan lihat di browser dengan localhost:5000, kamu bisa mencobanya sendiri.