Home »
Python
Introduction to Web development using Flask
Python flask: In this tutorial, we are going to learn about the introduction to web development using Flask in Python programming language?
Submitted by Sapna Deraje Radhakrishna, on October 16, 2019
Python Flask
Flask< is a python API or a micro framework that enables the programmer to implement the web application. With less base code, a simple web-application could be implemented.
Flask is based on WSGI (Web Server Gateway Interface) toolkit and Jinja2 template engine.
The flask doesn't have native support for accessing the databases, validating the web forms, authenticating or any other high-level operations. These and other key services are available through the extensions that integrate with the core packages. One has to cherry-pick the extensions that work best for the project.
Flask Dependencies
Flask works on python version 2.6+. To use flask libraries, install the flask plugin ( https://pypi.org/project/Flask/) using PIP. Please note, here the environment chosen is Virtual Environment, and hence we use PIP.
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET'])
def hello_world():
return "Hello World\n"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5005)
If we execute the above program, we see the below in the terminal,
(venv) -bash-4.2$ python3 hello_world_flask.py
* Serving Flask app "hello_world_flask" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5005/ (Press CTRL+C to quit)
Here, '/' URL is bound with the "hello_world" function. When the home page of the webserver is opened in the browser, the output of this method is rendered.
We could also access the above URL using the 'curl' as below,
-bash-4.2$ curl http://0.0.0.0:5005/
Hello World
-bash-4.2$
The flask application is started by invoking the run(). To enable the debug option, use the command app.run(debug=True), by default the debug option is turned off.
Routing
The routing technique is used to navigate to the right rest API directly from the URL. It is useful to access the web pages directly without navigating from the home page. The route() decorator is used to bind the URL.
@app.route('/include', methods=['GET']) # decorator
def include_help(): # binding to the method
return "Welcome to Include Help\n"
On the browser, http://localhost:5005/include, will display the output of the include_help().
Reading the variables passed in query parameters
To read the variables sent over as query parameters, use the '<>'
# routing the decorator function include_help_welcome
@app.route('/hello/<name>')
def include_help_welcome(name):
return 'Hello {}, welcome to Include_help\n'.format(name)
The output for the above shall be
>> Using Curl
-bash-4.2$ curl http://0.0.0.0:5005/hello/guest
Hello guest, welcome to Include_help
-bash-4.2$
>> In web browser
Support to HTTP methods
The Flask framework, supports the HTTP methods for a rest API, and they are,
Method Name |
Description |
GET |
retrieves specific information from the server as identified by the request URI. |
POST |
modifies data on the server from which a request was sent. |
PUT |
requests that the message body sent with the request be stored under the location provided in the HTTP message. |
DELETE |
deletes the specified resources. |
Static files and templates
A web application always will have static files, like CSS and JS and templates like html files. The Flask application requires to have the following project structure to read the static files and template.
The Flask framework provides method like render_template to render the requested html file. Consider the below example,
from flask import Flask, render_template
app = Flask(__name__)
# routing the decorator function hello_name
@app.route('/hello/<name>')
def include_help_welcome(name):
return render_template('index.html', user_name=name)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5005)
The output of the above will be,
Redirect and errors
The redirect() method, when called returns a response object and redirects to another location with the provided status code.
Syntax:
Flask.redirect(location, statuscode, response)
Here,
- location = URL where the response shall be redirected
- statuscode = default to 302
- response = to initiate a response
The standard status code defined in the HTTP holds good here, which are,
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 abort() method is used to terminate or end the session with an error code.
Syntax:
Flask.abort(code)
The code parameter takes either of the following HTTP error codes,
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