Flask Redirect


Set up URL Redirects with Python Flask. This article will address how to use flask redirect in our application.

Why are redirects necessary?

The redirect function majorly alters the URL of a page changing it to another one. All web applications need redirect functions to work more effectively. For instance when you enter the URL of a website and it redirects you to a different page on the web page.

Another instance is when you make payments on an online payment website, it redirects you to the payment confirmation page. It also helps to make URLs shorter. If you click on a short URL, say, https://bit.ly, then it redirects you to a page with a longer one.

Related course: Create Web Apps with Python Flask

Flask redirect

Before we proceed to create an application with the redirect function, let us look at the redirect syntax.

Syntax of Flask redirect attribute

redirect(location, code, response = None)

where:

  • Location refers to the eventual location to be redirected to.
  • Status Code: This shows the output of the redirect function. It defaults to 302
  • Response: This is applicable when initiating the response.

Let us focus on status codes for now. Some of them are:

Status Code HTTP meaning
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
306 Reserved
307 Temporary Redirect

The redirect function must be added before adding the status code.

from flask import redirect

How to deal with errors in redirect

There is an abort() function commonly used for failures that arise from special redirect failure cases. The syntax for abort() function: abort(<error_code>) The common Error Codes are as follows:

Error Code Meaning
400 Bad Request
401 Unauthenticated
403 Forbidden
404 Not Found
406 Not Acceptable
415 Unsupported Media Type
429 Too Many Requests

Error Codes The abort () has to be imported as well.

from flask import abort

Coding the application The code is as follows:

from flask import Flask,render_template,request,redirect
app = Flask(__name__)
@app.route('/form')
def form():
    return render_template('form.html')
@app.route('/verify', methods = ['POST', 'GET'])
def verify():
    if request.method == 'POST':
        name = request.form['name']
        return redirect(f"/user/{name}")
@app.route('/user/<name>')
def user(name):
    return f"Your name is {name}"
app.run(host='localhost', port=5000)

Here: The Form View simply displays the Form Template to the user.

After submitting the form, the data is sent with the request, to the Verify View. (check the form.html – action attribute)

The Verify View extracts the name data file from the form and the user is redirected to the User View (along with the name data).

Read our article on Flask syntax to gain a better understanding of the codes. The form.html is:

<form action="/verify" method = "POST">
    <p>name <input type = "text" name = "name" /></p>
    <p><input type = "submit" value = "Submit" /></p>
</form>

The flask form gathers user data and redirects it to a page showing the name entered on the web page. The sequence is as explained below:

The form function shows the Form. The name is extracted from the form using the verify function and is redirected to the user function and the name is taken as an argument and then displayed on the web page.

Conclusion

We've come to the end of the article. You can experiment with the abort() function so you can get a good handle on code.

Related course: Create Web Apps with Python Flask