pada materi kali ini kita melanjutkan belajar tentang flask framework kali ini kita akan membahas bagaimana menggunakan form dan cara mengaksesnya menggunakan flask framework
Apa Itu Form
form adalah sebuah object yang digunakan untuk mengontrol object dari kontrol lainya dan dapat menerima input dari pengguna.
Membuat Form
pada materi kali ini kita akan membuat form sederhana menggunakan HTML sebelumnya kita akan mereview project kita sebelumnya, buka dahulu lalu kita tambahkan rute untuk login seperti ini
# membuat route halaman login
@app.route('/login', methods=['GET', 'POST'])
def get_login():
# kode kamu
return render_template('login.html')
dimana skenario fungsi kali ini adalam membuat halaman login yang dimana user memasukan username dan password, buat template login di file login.html kita membuat form html sederhana seperti ini
<!-- nama file login.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Halaman Login</title>
</head>
<body>
<h1>Halaman Login</h1>
<form action="{{url_for('get_login')}}" method="POST">
<label for="fname">Username:</label><br>
<input type="text" id="fname" name="username" placeholder="masukan username"><br>
<label for="lname">Password</label><br>
<input type="password" id="passwd" name="passwd" placeholder="masukan password"><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
setelah kita membuat halaman login kita ingin bagaimana input dari user bisa ditangani menggunakan form tersebut, untuk mengatasinya kita bisa membuat rute untuk menangani form tersebut
Membuat Rute untuk Menangani Form
buka kembali file app.py dan edit rute @app.route('/login', methods=[‘GET’, ‘POST’]) dan tambahkan logika seperti ini
# mengecek method yang digunakan
if request.method == 'POST':
return redirect(url_for('show_user', username=request.form['username']))
fungsi disini kita akan mengecek method yang dikirimkan oleh si user jika method yang dikirimkan adalah POST maka kita akan me-redirect fungsi show_user yang berada pada rute @app.route('/users/')
@app.route('/users/<username>')
def show_user(username):
return render_template('profile.html', user=username)
seperti yang kita lihat fungsi diatas mengembalikan nilai dari parameter user=username, dan kita bisa replace nilai dari parameternya pada fungsi login seperti ini
return redirect(url_for('show_user', username=request.form['username']))
sehingga nilai pada form yang diinput user akan dikirim menggunakan method POST untuk di isikan pada parameter yang berada pada halaman profile hingga project kita menjadi seperti ini
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/users/<username>')
def show_user(username):
return render_template('profile.html', user=username)
# membuat route halaman login
@app.route('/login', methods=['GET', 'POST'])
def get_login():
# mengecek method yang digunakan
if request.method == 'POST':
return redirect(url_for('show_user', username=request.form['username']))
return render_template('login.html')
Catatan Kita bisa mengakses form html berdasarkan name yang kita definisikan di html contoh dengan name=username contoh:
<input type="text" id="fname" name="username" placeholder="masukan username">
kita bisa mengaksesnya dengan fungsi request seperti ini
request.form['username']
Contoh Login
kita bisa login sendan input semuau kita karena tidak ada autentifikasi khusus
setelah login kita akan diredirect ke halaman profile
Final Code
ini dia project yang telah kita buat di materi ini
# file app.py
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/users/<username>')
def show_user(username):
return render_template('profile.html', user=username)
# membuat route halaman login
@app.route('/login', methods=['GET', 'POST'])
def get_login():
# mengecek method yang digunakan
if request.method == 'POST':
return redirect(url_for('show_user', username=request.form['username']))
return render_template('login.html')
atau bisa di download di gitlab https://gitlab.com/perymerdeka/flask-tutorial-basic-by-pery.git