- Flask - FastCGI
- Flask - Deployment
- Flask - Sijax
- Flask - SQLAlchemy
- Flask - SQLite
- Flask - WTF
- Flask - Mail
- Flask - Extensions
- Flask - File Uploading
- Flask - Message Flashing
- Flask - Redirect & Errors
- Flask - Sessions
- Flask - Cookies
- Sending Form Data to Template
- Flask - Request Object
- Flask - Static Files
- Flask - Templates
- Flask - HTTP Methods
- Flask - URL Building
- Flask - Variable Rules
- Flask - Routing
- Flask - Application
- Flask - Environment
- Flask - Overview
- Flask - Home
Flask Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Flask – Redirect & Errors
Flask class has a redirect() function. When called, it returns a response object and redirects the user to another target location with specified status code.
Prototype of redirect() function is as below −
Flask.redirect(location, statuscode, response)
In the above function −
location parameter is the URL where response should be redirected.
statuscode sent to browser’s header, defaults to 302.
response parameter is used to instantiate response.
The following status codes are standardized −
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
The default status code is 302, which is for ‘found’.
In the following example, the redirect() function is used to display the login page again when a login attempt fails.
from flask import Flask, redirect, url_for, render_template, request # Initiapze the Flask apppcation 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)
Flask class has abort() function with an error code.
Flask.abort(code)
The Code parameter takes one of following values −
400 − for Bad Request
401 − for Unauthenticated
403 − for Forbidden
404 − for Not Found
406 − for Not Acceptable
415 − for Unsupported Media Type
429 − Too Many Requests
Let us make a spght change in the login() function in the above code. Instead of re-displaying the login page, if ‘Unauthourized’ page is to be displayed, replace it with call to 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)Advertisements