Redirect & url_for
Penjelasan
redirect() mengembalikan response HTTP 302 yang memerintahkan browser pindah ke URL lain — umum dipakai setelah form berhasil disubmit (pola Post/Redirect/Get untuk mencegah submit ganda saat refresh). url_for() membuat URL dari nama fungsi view, bukan dari string path mentah, sehingga kalau path route berubah di kemudian hari, kamu tidak perlu mengubah semua tempat yang mereferensikannya. url_for() juga otomatis menangani parameter dinamis, misalnya url_for('detail_produk', produk_id=5) menghasilkan '/produk/5'. Pola redirect(url_for(...)) adalah kombinasi yang paling sering dipakai.
Contoh Konsep
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/produk/<int:produk_id>')
def detail_produk(produk_id):
return f'Produk {produk_id}'
@app.route('/login', methods=['POST'])
def proses_login():
return redirect(url_for('detail_produk', produk_id=1))
@app.route('/lama')
def url_lama():
return redirect(url_for('detail_produk', produk_id=1))
Praktikum
Buat route '/checkout' yang setelah diproses melakukan redirect ke route 'terima_kasih'.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan pernah hardcode string URL seperti redirect('/produk/1') di kode besar — selalu pakai url_for() supaya route tetap konsisten walau path-nya berubah.