Back

Cara Mengakses Form di Flask

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>

data login
data login

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

login
login

setelah login kita akan diredirect ke halaman profile

hasil
hasil

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

Referensi

dokumentasi sekolahkoding

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy