Flask - Redirect & Error
Kelas Flask memiliki file redirect()fungsi. Saat dipanggil, ini mengembalikan objek respons dan mengarahkan pengguna ke lokasi target lain dengan kode status yang ditentukan.
Prototipe dari redirect() fungsinya seperti di bawah ini -
Flask.redirect(location, statuscode, response)
Dalam fungsi di atas -
location parameter adalah URL tempat respons harus dialihkan.
statuscode dikirim ke tajuk browser, default ke 302.
response parameter digunakan untuk memberi contoh respons.
Kode status berikut distandarisasi -
- HTTP_300_MULTIPLE_CHOICES
- HTTP_301_MOVED_PERMANENTLY
- HTTP_302_FOUND
- HTTP_303_SEE_OTHER
- HTTP_304_NOT_MODIFIED
- HTTP_305_USE_PROXY
- HTTP_306_RESERVED
- HTTP_307_TEMPORARY_REDIRECT
Itu default status kode adalah 302, yang untuk ‘found’.
Dalam contoh berikut, file redirect() Fungsi ini digunakan untuk menampilkan halaman login kembali ketika upaya login gagal.
from flask import Flask, redirect, url_for, render_template, request
# Initialize the Flask application
app = Flask(__name__)
@app.route('/')
def index():
return render_template('log_in.html')
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST' and request.form['username'] == 'admin' :
return redirect(url_for('success'))
else:
return redirect(url_for('index'))
@app.route('/success')
def success():
return 'logged in successfully'
if __name__ == '__main__':
app.run(debug = True)
Kelas Flask memiliki abort() berfungsi dengan kode kesalahan.
Flask.abort(code)
Itu Code parameter mengambil salah satu dari nilai berikut -
400 - untuk Permintaan Buruk
401 - untuk Tidak Diautentikasi
403 - untuk Terlarang
404 - untuk Tidak Ditemukan
406 - untuk Not Acceptable
415 - untuk Jenis Media yang Tidak Didukung
429 - Terlalu Banyak Permintaan
Mari kita buat sedikit perubahan pada login()berfungsi dalam kode di atas. Alih-alih menampilkan kembali halaman login, jika‘Unauthourized’ halaman yang akan ditampilkan, gantikan dengan panggilan ke abort(401).
from flask import Flask, redirect, url_for, render_template, request, abort
app = Flask(__name__)
@app.route('/')
def index():
return render_template('log_in.html')
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
if request.form['username'] == 'admin' :
return redirect(url_for('success'))
else:
abort(401)
else:
return redirect(url_for('index'))
@app.route('/success')
def success():
return 'logged in successfully'
if __name__ == '__main__':
app.run(debug = True)