3. Environment Preparation (docker)
Boot2docker Installer (127M)
Contains latest docker already, fast
Container persistence via disk automount on /var/lib/docker
$ docker -v
User/Passwd: docker/tcuser (192.168.59.103)
Download python:2 docker image
$ docker pull python:2
(Windows/Mac) Clone the code from github to your user
directory (~/git)
https://github.com/larrycai/codingwithme-flask
Notepad++ & MobaXterm are recommended
Learn flask in 90 minutes3 04/13/15
http://boot2docker.io/
4. Introduction
Flask is a microframework for Python based on
Werkzeug, Jinja 2 and good intentions.
Similar to Play framework (Java/Scala), Sinatra (Ruby),
Also Django vs Ruby on Rails vs Grail ..
Learn flask in 90 minutes4 04/13/15
http://flask.pocoo.org/
5. Exercise 1: Hello World
Run first app inside docker environment
$ cd /c/Users/<id>/git/codingwithme-flask
$ docker run -it -v $PWD:/code -w /code -p 5000:5000 python:2 bash
# pip install flask
# cd exer1
# python app.py
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.59.3 - - [08/Apr/2015 15:50:29] "GET / HTTP/1.1" 200 -
192.168.59.3 - - [08/Apr/2015 15:50:29] "GET /favicon.ico HTTP/1.1" 404
-
Browse: http://192.168.59.103:5000
Edit the app.py to print your name “Hello
Larry” instead of “Hello World”
Tips: edit in windows, don’t need restart
(debug=True) Learn flask in 90 minutes5 04/13/15
6. Routing/Redirect for URL
Routing is defined by the route() decorator
Dynamic routing using variable
Redirect to another one using redirect, url_for
Learn flask in 90 minutes6 04/13/15
7. Exercise 2: Routing
Implement /user to suggest use /user/<name>
Implement /user/<name>, say hello if it is Larry, otherwise
say byebye
Redirect /users/ to /user with error indication
# cd ../exer2
# python app.py
Tips: check console log redirect 302 (redirect)
Learn flask in 90 minutes7 04/13/15
8. Template using Jinja2
Flask configures the Jinja2 template engine automatically
render_template
Jinja2 is a full featured template engine for Python.
Map python variable into template
Template inheritance makes it possible to use the same
or a similar layout for all templates
Learn flask in 90 minutes8 04/13/15
http://jinja.pocoo.org/
9. Exercise 3: Jinja2 Template
Use template instead of string for function hello_user()
# cd ../exer3
# python app.py
Learn flask in 90 minutes9 04/13/15
10. Handle form
request.form is good enough for simple form
Flask-WTF module can be used if needed complex
handling for the form (like validation)
Learn flask in 90 minutes10 04/13/15
11. Exercise 4: Web Form
Provide form to user as started in user()
# cd ../exer4
# python app.py
Check whether it is in allowed list and redirect to hello
page, otherwise show error message (“xxx, who bring
you here ?”)
Tips: form is normal html form
Learn flask in 90 minutes11 04/13/15
12. Database ORM – Flask-SQLAlchemy
Flask-SQLAlchemy is extension provides a wrapper
for the SQLAlchemy project, which is an Object
Relational Mapper or ORM
Support different database (SQLite, MySQL, Postgre ….)
Command Steps
Define database
The data model
Create database
Operate database ..
Learn flask in 90 minutes12 04/13/15
13. Exercise 5: ORM for Database
Start with base comments app and understand
# cd ../exer5
# pip install flask-sqlalchemy
# python app.py
Add extra item “nickname”
Bonus:
Initialize the database (/create) if database doesn’t exist (remove
*.sqlite3 first)
Reset the database (/drop)
Tips:
db.create_all(app=app) & db.drop_all(app=app)
Learn flask in 90 minutes13 04/13/15
example is based on: http://runnable.com/UhcUVQ7XwdEqAAPg/using-
sqlalchemy-in-flask-for-python
14. Summary
Flask is python web framework, similar exists in other
language
Routing/Template/Form/Database are the base
knowledge.
Simple but powerful (together with css/javascript)
Learn more sample, and try to build your own !!
Learn flask in 90 minutes14 04/13/15
15. Reference
http://flask.pocoo.org/
Book: Flask Web Development:
http://oreilly.com/catalog/9781449372620/
Miguel Grinberg’s Blog: http://blog.miguelgrinberg.com/
Base example for exer5 :
http://runnable.com/UhcUVQ7XwdEqAAPg/using-sqlalchemy-
in-flask-for-python
Learn flask in 90 minutes15 04/13/15
16. ChangeLog
2015/04/12: first release
2015/04/13: after first pilot, summary is added
Learn docker in 90 minutes16 04/13/15