Borang dan Data Permintaan
Proses input pengguna
Borang dan Data Permintaan ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Objek request
Flask memberikan setiap paparan akses kepada objek global request yang menyimpan semua data masuk: medan borang, rentetan pertanyaan, JSON, pengepala dan banyak lagi.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')Parameter Rentetan Pertanyaan
Data selepas ? dalam URL disimpan dalam request.args. Gunakan .get() untuk membaca nilai dengan selamat.
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')Borang HTML
Borang menghantar data apabila dihantar. Atribut method dan action menentukan cara dan tempat penghantaran itu dilakukan.
# <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 Borang
Medan borang yang dihantar tiba dalam request.form. Akses medan tersebut menggunakan atribut name bagi input itu.
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 Selamat dengan get
Menggunakan request.form['x'] akan menjana ralat jika kunci itu tiada. Sebaliknya, gunakan request.form.get('x'), yang mengembalikan None.
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 Paparan
Corak yang biasa digunakan ialah memaparkan borang pada GET dan memproses data pada POST, semuanya dalam satu paparan.
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')Mengesahkan Data Masukan
Jangan sesekali mempercayai data masukan pengguna. Semak bahawa medan yang diperlukan wujud dan mempunyai nilai yang munasabah 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 menghantar JSON. request.get_json() menghuraikan isi kandungan tersebut menjadi kamus 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')Muat Naik Fail
Fail yang dimuat naik berada dalam request.files. Simpan fail dengan kaedah .save() selepas mengesahkannya.
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 Selepas POST
Selepas mengendalikan borang, alihkan pengguna untuk mengelakkan penghantaran pendua apabila halaman dimuat semula. 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')Mesej Flash
flash() menyimpan mesej sekali guna yang dipaparkan selepas pengalihan, sesuai untuk pengesahan seperti 'Berjaya 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')Ujian Ringkas
Uji pengetahuan anda tentang pengendalian borang.
Rumusan
Anda telah memproses data masukan pengguna dalam Flask.
request.argsuntuk rentetan pertanyaan,request.formuntuk medan borangrequest.get_json()untuk isi JSON,request.filesuntuk muat naik- Sentiasa sahkan data masukan dan gunakan
.get()untuk akses yang selamat - Gunakan corak hantar, alih dan dapatkan serta
flash()untuk pengalaman pengguna yang kemas
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 76
- Pelajaran
- 320
Soalan Lazim
Adakah pelajaran “Borang dan Data Permintaan” percuma?
Ya — teks penuh “Borang dan Data Permintaan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Borang dan Data Permintaan”?
Proses input pengguna Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Python Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Borang dan Data Permintaan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Laluan dan Paparan
- Templat dengan Jinja2
- Borang dan Data Permintaan
- Membina Titik Akhir REST