- Flask Framework Cookbook
- Shalabh Aggarwal
- 406字
- 2021-08-05 17:17:21
Bootstrap layout
Most of the applications in Flask follow a specific pattern to lay out templates. In this recipe, we will talk about the recommended way of structuring the layout of templates in a Flask application.
Getting ready
By default, Flask expects the templates to be placed inside a folder named templates
at the application root level. If this folder is present, then Flask will automatically read the contents by making the contents of this folder available for use with the render_template()
method, which we will use extensively throughout this book.
How to do it…
Let's demonstrate this with a small application. This application is very similar to the one we developed in Chapter 1, Flask Configurations. The first thing to do is add a new folder named templates
under my_app
. The application structure will now look like the following lines of code:
flask_app/ - run.py my_app/ – __init__.py - hello/ - __init__.py - views.py - templates
We need to make some changes to the application. The hello_world
method in the views file, my_app/hello/views.py
, will look like the following lines of code:
from flask import render_template, request @hello.route('/') @hello.route('/hello') def hello_world(): user = request.args.get('user', 'Shalabh') return render_template('index.html', user=user)
In the preceding method, we look for a URL query argument, user
. If it is found, we use it, and if not, we use the default argument, Shalabh
. Then, this value is passed to the context of the template to be rendered, that is, index.html
, and the resulting template is rendered.
To start with, the my_app/templates/index.html
template can be simply put as:
<html> <head> <title>Flask Framework Cookbook</title> </head> <body> <h1>Hello {{ user }}!</h1> <p>Welcome to the world of Flask!</p> </body> </html>
How it works…
Now, if we open the URL, http://127.0.0.1:5000/hello
, in a browser, we will see a response, as shown in the following screenshot:

We can also pass a URL argument with the user
key as http://127.0.0.1:5000/hello?user=John
; we will see the following response:

As we can see in views.py
, the argument passed in the URL is fetched from the request
object using request.args.get('user')
and passed to the context of the template being rendered using render_template
. The argument is then parsed using the Jinja2 placeholder, {{ user }}
, to fetch the contents from the current value of the user
variable from the template context. This placeholder evaluates all the expressions that are placed inside it, depending on the template context.
See also
- The Jinja2 documentation can be found at http://jinja.pocoo.org/. This comes in handy when writing templates.
- C++案例趣學
- Developing Mobile Web ArcGIS Applications
- Visual C++實例精通
- Android Application Development Cookbook(Second Edition)
- 可解釋機器學習:模型、方法與實踐
- 從零開始學C語言
- Learning Node.js for .NET Developers
- ASP.NET Web API Security Essentials
- 大學計算機基礎實訓教程
- Learning Cocos2d-JS Game Development
- Kotlin語言實例精解
- 現代C++語言核心特性解析
- Backbone.js Patterns and Best Practices
- Python全棧開發:數據分析
- 面向對象程序設計及C++實驗指導(第3版)