Upload
larry-cai
View
499
Download
2
Tags:
Embed Size (px)
Citation preview
Larry cai <[email protected]>
Agenda Introduction Exercise 1: Flask’s “Hello World” Exercise 2: Routing for URL Exercise 3: Template (Jinja2) Exercise 4: Handle form Exercise 5: Database (Flask-SQLAlchemy) Reference
Learn flask in 90 minutes2 04/13/15
http://flask.pocoo.org/
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/
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/
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
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
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
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/
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
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
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
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
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
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
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
ChangeLog 2015/04/12: first release 2015/04/13: after first pilot, summary is added
Learn docker in 90 minutes16 04/13/15