Formulir dan Data Permintaan
Proses input pengguna
Formulir dan Data Permintaan adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Objek request
Flask memberi setiap tampilan akses ke objek global request yang menyimpan semua data masuk: kolom formulir, string kueri, JSON, header, dan lainnya.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')Parameter String Kueri
Data setelah ? dalam URL berada di request.args. Gunakan .get() untuk membaca nilai dengan aman.
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('q', '')
return 'Searching for ' + term
print('/search?q=cats -> request.args')Formulir HTML
Formulir mengirim data saat dikirimkan. Atribut method dan action menentukan caranya dan tujuannya.
# <form method='POST' action='/login'>
# <input name='username'>
# <input name='password' type='password'>
# <button>Submit</button>
# </form>
print('Form posts username and password')Membaca Data Formulir
Kolom formulir yang dikirimkan masuk ke request.form. Akses kolom tersebut melalui atribut name pada input.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form['username']
return 'Welcome ' + user
print('request.form holds posted fields')Akses Aman dengan get
Menggunakan request.form['x'] akan menimbulkan kesalahan jika kuncinya tidak ada. Sebaiknya gunakan request.form.get('x'), yang mengembalikan None sebagai gantinya.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
if not user:
return 'Missing username', 400
return 'Welcome ' + user
print('.get avoids KeyError')GET dan POST dalam Satu Tampilan
Pola yang umum adalah menampilkan formulir saat GET dan memproses data saat POST, semuanya dalam satu tampilan.
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
return 'Thanks, ' + request.form.get('name', 'friend')
return render_template('contact.html')
print('One view, two methods')Memvalidasi Input
Jangan pernah mempercayai input pengguna. Pastikan kolom yang wajib diisi tersedia dan memiliki nilai yang wajar sebelum menggunakannya.
from flask import Flask, request
app = Flask(__name__)
@app.route('/age', methods=['POST'])
def age():
raw = request.form.get('age', '')
if not raw.isdigit():
return 'Age must be a number', 400
return 'Age is ' + raw
print('Validate before trusting input')Membaca JSON
Klien API sering mengirim JSON. request.get_json() mengurai isi permintaan menjadi dict Python.
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
data = request.get_json()
return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')Unggahan File
File yang diunggah berada di request.files. Simpan salah satunya dengan metode .save() setelah memvalidasinya.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('photo')
if f:
return 'Received ' + f.filename
return 'No file', 400
print('request.files holds uploads')Pengalihan Setelah POST
Setelah menangani formulir, alihkan pengguna untuk mencegah pengiriman ganda saat halaman dimuat ulang. Gunakan redirect(url_for(...)).
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/done')
def done():
return 'All done'
@app.route('/save', methods=['POST'])
def save():
return redirect(url_for('done'))
print('Post/Redirect/Get pattern')Pesan Flash
flash() menyimpan pesan satu kali yang ditampilkan setelah pengalihan, sangat berguna untuk konfirmasi seperti 'Berhasil disimpan'.
from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'
@app.route('/save', methods=['POST'])
def save():
flash('Saved successfully')
return redirect(url_for('save'))
print('flash shows a one-time message')Pemeriksaan Singkat
Uji pengetahuan Anda tentang penanganan formulir.
Rangkuman
Anda telah memproses input pengguna di Flask.
request.argsuntuk string kueri,request.formuntuk kolom formulirrequest.get_json()untuk isi JSON,request.filesuntuk unggahan- Selalu validasi input dan gunakan
.get()untuk akses yang aman - Gunakan Post/Redirect/Get dan
flash()untuk pengalaman pengguna yang rapi
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Formulir dan Data Permintaan” gratis?
Ya — teks lengkap “Formulir dan Data Permintaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Formulir dan Data Permintaan”?
Proses input pengguna Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Formulir dan Data Permintaan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Rute dan View
- Template dengan Jinja2
- Formulir dan Data Permintaan
- Membangun Endpoint REST