“Hello World” in Flask
Create a folder named microblog (or whatever you want). Then cd into that folder and run following prompt in terminal:
Now you’ll have a folder named flask inside microblog, containing a private version of Python interpreter.
And you should install flask and extensions by the commands below:
1 2 3 4 5 6 7 8 9 10 11 12
| $ flask/bin/pip install flask $ flask/bin/pip install flask-login $ flask/bin/pip install flask-openid $ flask/bin/pip install flask-mail $ flask/bin/pip install flask-sqlalchemy $ flask/bin/pip install sqlalchemy-migrate $ flask/bin/pip install flask-whooshalchemy $ flask/bin/pip install flask-wtf $ flask/bin/pip install flask-babel $ flask/bin/pip install guess_language $ flask/bin/pip install flipflop $ flask/bin/pip install coverage
|
After that, let’s create the basic structure for our application: app app/static app/templates tmp.
app — where the application package is
static — stores static files like images, javascripts, and css.
templates — where templates will go.
Then you can start with __init__.py which should put into app folder (file app/__init__.py):
1 2 3 4
| from flask import Flask
app = Flask(__name__) from app import views
|
The views are the handlers that response to requests from web browsers or other clients. Each view function is mapped to one or more request URLs.
Let’s see what a views function looks like (file app/views.py):
1 2 3 4
| from flask import Flask
app = Flask(__name__) from app import views
|
Finally we should create a script to starts up the web server with our application(file run.py):
1 2 3
| from app import app app.run(debug=True)
|
To indicating that is an executable file you need to run this in terminal:
Now the file structure should look like:
1 2 3 4 5 6 7 8 9 10
| microblog\ flask\ <virtual environment files> app\ static\ templates\ __init__.py views.py tmp\ run.py
|
Then start to write the template (file app/templates/index.html):
1 2 3 4 5 6 7 8 9 10 11
| <html> <head> <title>{{ title }} - microblog</title> </head> <body> <h1>Hello, {{ user.nickname }}!</h1> </body> </html>
|
Now let’s write the view function that uses this template (file app/views.py):
1 2 3 4 5 6 7 8 9 10
| from flask import render_template from app import app
@app.route('/') @app.route('/index') def index(): user = {'nickname': 'ching'} return render_template('index.html', title='Home', user=user)
|
render_template function is what we import from Flask framework to render the template. It uses Jinja2 templating engine.