Ketika pengguna mengakses URL ini berjalan di aplikasi labu saya, saya ingin layanan web dapat menangani parameter yang ditentukan setelah tanda tanya:
http://10.1.1.1:5000/login?username=alex&password=pw1
#I just want to be able to manipulate the parameters
@app.route('/login', methods=['GET', 'POST'])
def login():
username = request.form['username']
print(username)
password = request.form['password']
print(password)
python
web-services
flask
url-parameters
Alex Stone
sumber
sumber
Jawaban:
Gunakan
request.args
untuk mendapatkan konten parsing string kueri:sumber
app.route('/username=<username>&password=<password>')
? Dengan begitu Anda tidak menulis baris request.args.get sama sekali.?
di awal parameter, jadi Anda inginapp.route('/?username=<username>&password=<password>')
, tetapi Flask akan membaca semuanya setelah tanda tanyarequest.args
dan tidak akan menafsirkan variabel dari rute. Jika Anda ingin mendapatkan contoh rute Anda menggunakan formulir HTML, Anda akan memerlukan banyak JavaScript tambahan untuk membuatnya berfungsi. Terakhir, variabel rute wajib,request.args
bisa opsional.Parameter URL tersedia di
request.args
, yang merupakan ImmutableMultiDict yang memilikiget
metode, dengan parameter opsional untuk nilai default (default
) dan tipe (type
) - yang merupakan callable yang mengubah nilai input ke format yang diinginkan. (Lihat dokumentasi metode untuk lebih jelasnya.)Contoh dengan kode di atas:
sumber
filter
adalah kata yang dilindungi undang-undang, jangan digunakan;)Anda juga dapat menggunakan tanda kurung <> pada URL definisi tampilan dan input ini akan masuk ke argumen fungsi tampilan Anda
sumber
Jika Anda memiliki satu argumen yang diteruskan dalam URL, Anda dapat melakukannya sebagai berikut
Jika Anda memiliki beberapa parameter:
Apa yang Anda coba lakukan berfungsi jika ada permintaan POST di mana parameter dilewatkan sebagai parameter formulir dan tidak muncul di URL. Jika Anda benar-benar mengembangkan API login, disarankan Anda menggunakan permintaan POST daripada MENDAPATKAN dan memaparkan data kepada pengguna.
Dalam hal permintaan pos, itu akan berfungsi sebagai berikut:
Cuplikan HTML:
Rute:
sumber
url:
kode:
(Edit: spasi yang dihapus dalam format string)
sumber
Sangat sederhana. Biarkan saya membagi proses ini menjadi dua langkah sederhana.
Pada template html Anda akan mendeklarasikan tag nama untuk nama pengguna dan kata sandi sebagai
Kemudian, ubah kode Anda sebagai:
sumber
Gunakan
request.args.get(param)
, misalnya:Inilah tautan yang dirujuk ke kode.
sumber