Skip to main content

URL Shortner with Python and Flask - Chapter 4 - Blueprints

Remember? In the previous part we created flask app which had all the code in a single file and we called it app.py. As our site was small, we were able to manage the code. But what if, you want to create a website as big as facebook? Yes, features like groups, friends, newsfeed, Pages etc. can be created using flask. But do you think, that it would be better if all the data were to be on the same file?

If you are becoming bigger then you should consider separating code into different files so that if you want to edit one feature then you can do easily. The main point here is, organising the files and features becomes easy.

But how do we do we organize and seperate features in flask? The best answer is Flask-Blueprints. There are many advantages of using Blueprints, and you can read them from here: Why Blueprints?.

Starting from scratch

Now that you are convinced, how do we use blueprints?. Lets see an example.

The following is the __init__.py file which you will store in the CWD(Current Working Directory)


In [ ]:
# __init__.py
from flask import Flask
# users blueprint
from users import users

app = Flask(__name__)

# registering the blueprint
app.register_blueprint(users)

# start the app
if __name__ == "__main__":
    app.run(debug = True)

After you have created the above file, create a folder named users and __init__.py inside the users folder.

So your folder structure will be:

├── __init__.py            // File with app object
└── users
    ├── __init__.py        // users Blueprint file
In [ ]:
# users/__init__.py
from flask import Blueprint

# we will import this variable
users = Blueprint('users', __name__)

@users.route('/IAmUser')
def iAmUser():
    return "Hello I am user and I am from 'users' blueprint"

After you have saved the above file, fire up a terminal or command prompt in CWD, browse to the URL which we have created in the blueprints and you should see a message stating - "Hello I am user and I am from 'users' blueprint".

How it works?

Even though blueprints is one of the important concepts in flask application creation I will give you a very brief overview of what actually is happening in the background.

  • When command prompt fires up, it will first import Flask from flask
  • Next from the users folder we are importing users variable.
  • After we have imported the files we are creating our app object.
  • We are registering the users blueprint with the app so that it will import all the URL's(binding functions).
  • Start the server and serve files to the user.

For beginners, I can understand that you are confused with __init__.py files. For more engagement and insight you should visit Python - What is init.py for?

Extending the application

Getting upto here is a big deal. After this it is very simple and straight forward. You can register as many blueprints as you want or require. But remember, blueprints help us in broad classification of our site functions.

You can serve templates for each and user from the templates folder in the users folder. For this example, your folder structure will look as follows:

├── __init__.py            // File with app object
└── users
    ├── templates        // templates
        ├── index.html
    ├── __init__.py        // users Blueprint file
You can even separate the views(URLs) from the main file(__init__.py). The example will assume the folder structure as follows:
├── __init__.py            // File with app object
└── users
    ├── __init__.py        // users Blueprint file
    ├── views.py           // views(URLs)

__init__.py file in CWD will not see any changes.

users/__init__.py file will be as follows:

In [ ]:
# users/__init__.py
from flask import Blueprint

users = Blueprint('users', __name__)

from . import views
In [ ]:
# users/views.py
from . import users

@users.route('/IAmUser')
def iAmUser():
    return "Hello I am user and I am from 'users' blueprint"

Reload the server and you should see the same text that you have seen in the previous example.

This one is simple and in this example we are only defining the binding functions in some other file and importing that file into the main file and this will make the app package more and more manageable.

For more information on Blueprints you can see: Modular Applications with Blueprints, Python - Whatare Flask Blueprints

Note: If you have not understood anything, then don't worry. Our application is so small and so we are not going to use blueprints in our app. 😃

But, if you haven't understood anything or have any doubt, don't hesitate to comment and I will be very happy to help you.

If you have found any typo or have feedback then please comment in the comment box and I will be glad to see your comment.

You can also contact me.

Thank you. Have a nice day😃.

Popular posts from this blog

Making a quiz web app with python and flask

Edit : When you are creating a web app with h tml templates, then y ou will have to sa ve the html file in templates folder in the Current Wor ki ng Directory( CWD). If you save the file in the C W D directl y you will get a TemplateNotFound error. Thank you Udhay for pointing it out.   In this post we will create a quiz website using python . I will be using the flask framework . After reading this tutorial you will learn form submission , flask templates , python code in flask templates , shuffling the questions and options with the random module and few others.  Please note that this tutorial is not big as it seems to be. Some of the code has been rewritten to maintain consistency and also font size is somewhat big so that your eyes won't get stressed reading this tutorial. Also the content has not occupied the full width of the page. In this tutorial I am assuming that you are having a very basic understanding of the flask framework . Please refer the documentation

Problem 11 Project Euler Solution with python

Largest product in a grid In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He