Upload
sian-lerk-lau
View
77
Download
2
Embed Size (px)
Citation preview
learningpython with flaskP Y L A D I E S 2 0 1 7 W O R K S H O P # 1
MALAYSIA
before we start
whypyladies
M A L A Y S I A
MALAYSIA
howpyladies
W O R K S
MALAYSIA
pyladiesneed you!
B E P A R T O F T H E H I S T O R Y M A K E R S
MALAYSIA
Just right before we start
@OnApp https://facebook.com/OnApp
A SHOUT OUT TO OUR VENUE SPONSOR
introduction
SIAN LERK LAUlinkedin.com/in/sianlerk
@kiawin
∗ Amateur guitarist
∗ Ex-Intern at OnApp KL
∗ UM undergraduate student (3rd year)
∗ Python newbie, 8 months old
FADHIL YAACOB@sdil
a shout out to ourpyladies mentors
ALIES YAPJANICE SHIU
PEI PEI
MALAYSIA
jom!
R UREHDYTO PYTHON*
DO.* WHY PYTHON* THE ENVIRONMENT (PART 1 & 2)* PYTHON 101* CONTROL STRUCTURES* A REAL PROGRAM
WHY* CODE IN PYTHON
EASY TO UNDERSTANDCONCISE SYNTAXMULTI-PURPOSE STRENGTH OF PYTHON
GOOGLE-ABLE!WELL SUPPORTED LIBSFAST TO DELIVER STRENGTH OF PYTHON
ENV*PYTHON ENVIRONMENT (PART 1)
# Python interactive shell$ python
# Python interactive shell # (on steroid!)$ pip install ipython$ ipython
# QUIZ: What version of python # are you currently using?
ENV* - EASIEST WAY TO PYTHON
101*PYTHON - DATA TYPES
# DECLARE-LESS TYPED>>> a = 1>>> print a1>>> type(a)<type 'int'>
101* - DATA TYPES
# MORE TYPES - '' and "">>> b = 'a'>>> c = 'abc'>>> d = "abc"# QUIZ: WHAT DATA TYPES ARE b, c and d?>>> type(b)>>> type(c)>>> type(d)101* - DATA TYPES
# MORE TYPES# bool, NoneType, float, long>>> e = True>>> f = False>>> g = None>>> h = 1.0>>> i = 1L# QUIZ: WHAT IS None?
101* - DATA TYPES
101*PYTHON - COLLECTIONS
# COLLECTION 1: LIST>>> a = [1, 2, 3]>>> b = list()>>> b.append(1)>>> b.append(2)>>> b.append(3)# QUIZ: How do we retrieve the value?# QUIZ: Is a and b same?
101* - DATA TYPES
# SAME - EQUALITY or IDENTITY?>>> a == bTrue>>> a is bFalse
# QUIZ: WHAT IS THE DIFF # BETWEEN == AND is
101* - DATA TYPES
# COLLECTION 2 - TUPLE>>> c = (1, 2, 3)>>> d = 1, 2, 3
# QUIZ: SO AGAIN, IS c SAME with d?
101* - DATA TYPES
# COLLECTION 3: dict>>> e = {1: 11, 2: 22}>>> e[1]>>> e[2]
# QUIZ: IS THIS AN array?# QUIZ: MUST THE key BE int?
101* - DATA TYPES
# COLLECTION 4: set>>> f = set()>>> f.add(1)>>> f.add(2)>>> f.add(3)
# QUIZ: WHAT IS THE DIFF # BETWEEN list AND set?
101* - DATA TYPES
101*PYTHON - CONTROL STRUCTURES
101* - DATA TYPES
# if, else, elif>>> a = 2>>> if a == 1:... print "hello"... elif a == 2:... print "world"
>>>
101* - DATA TYPES
# if, else, elif CONTINUES>>> a = 1>>> if a == 1:... print "hello"... else:... print "world"
>>>
101* - DATA TYPES
# for LOOP>>> for i in [1, 2, 3]:... print i
>>> for j in range(1,3):... print j
# QUIZ: WHAT DO YOU SEE WHEN print j
101* - DATA TYPES
# for LOOP>>> for i in (1, 2, 3):... print i
>>> for k,v in {1: 11, 2: 22}.iteritems():... print k, v
# QUIZ: WHAT DO YOU SEE WHEN print k, v
101* - DATA TYPES
# list comprehension>>> a = [1,2,3,4,5]>>> b = [i+1 for i in a]
# QUIZ: WHAT IS THE VALUE OF b?
101* - DATA TYPES
# list comprehension>>> a = [1,2,3,4,5]>>> b = [i for i in a if i % 2 == 0]
# QUIZ: WHAT IS THE VALUE OF b?
ENV*PYTHON ENVIRONMENT (PART 2)
pip∗ Package management system used to install and
manage software packages written in Python∗ Why?
Easy package installations, updating, configuring and removals with a single command
∗ Over 86,000 Python packages can be accessed through PyPI
∗ Sample commands:$ pip install flask$ pip uninstall flask
python packages∗ Mathematical Analytics: Numpy∗ DB Connectors: MySQL, MongoDB,
PostgreSQL, etc.∗ Web Frameworks: Pyramid, Django∗ Twitter API client∗ Many more…“It’s like Swiss-army toolchain”
virtualenv∗ Is an isolated working copy of Python which allows
you to work on a specific project without worry of affecting other projects
∗ Why?We might wants to maintain the package version (prefer not upgrading it to newer version)
“Do not fix things that aren’t broken”
THE BIG PICTUREPython3
virtualenv1 virtualenv2 virtualenv3
package1 v1
package2 v1
package3 v1
package1 v2
package2 v2
package3 v2
package1 v1
package2 v2
package3 v1
virtualenv# INSTALL VIRTUALENV$ pip install virtualenv
# CREATE A NEW VENV$ virtualenv Project1
virtualenv# ACTIVATE A VENV ON LINUXworkon Project1# ON WINDOWS$ /path/to/folder/Scripts/activate.bat
# LIST INSTALLED PACKAGES(test)$ pip freeze
PROG*A REAL PROGRAM, NOW
flask∗ Flask is a micro web framework written in Python∗ Micro framework means it does not require
particular tools or libraries and it just works
∗ Suitable for minimal website or a full featured website
∗ Many extensions freely available:User authenticationsFlask-SecurityFile UploadsDatabase
Let’s get hand dirty
∗ “Hello World!”
PROG* - HELLO WORLD!
# INSTALL FLASK MODULE$ pip install flask
# QUIZ: WHAT DO YOU SEE IN RESULT# OF THE ABOVE COMMAND
PROG* - HELLO WORLD!
# EDIT A NEW FILE USING YOUR FAVOURITE# TEXT EDITOR$ vim hello.py
PROG* - HELLO WORLD!
# KEY IN THE FOLLOWING INTO THE FILEfrom flask import Flaskapp = Flask(__name__)
@app.route("/")def hello(): return "Hello World!"
NOOO WAY… R U KIDDING ME?
CONGRATULATIONS!U HV COMPLETED
A WORKING PROGRAM WEB SERVICE
# LET’S START THE WEB SERVICE$ export FLASK_APP=hello.py$ flask run
# IF WINDOWS$ set FLASK_APP=hello.py$ flask run
# QUIZ: WHAT’S NEXT?
PROG* - HELLO WORLD!
localhost:5000
BEAM ME UP, SCOTTY
Hello World!
SIMPLICITYProgramming can be easy and fun
(Using python)
PROG*WHAT’S NEXT? MOOOOOOORE~
localhost:5000
BEAM ME UP, SCOTTY… AGAIN
Not Hello World!
localhost:5000/hello
HECTOR AND THE SEARCH FOR HAPPINESS
Hello World!
PROG* - MOOOOOOORE~
# KEY IN THE FOLLOWING INTO THE FILEfrom flask import Flaskapp = Flask(__name__)
@app.route("/")def index(): return "Not Hello World!"
@app.route("/hello")def hello(): return "Hello World!"
# QUIZ: MUST THE ROUTE NAME SAME WITH # THE METHOD NAME?
PROG* - MOOOOOOOORE~
# QUIZ: CAN I DON’T RESTART FLASK# EVERY TIME I MODIFY MY FILE?$ export FLASK_DEBUG=1$ flask run
# QUIZ: WHAT IS THE COMMAND IF YOU USE# WINDOWS?
PROG* - MOOOOOOORE~
# KEY IN THE FOLLOWING INTO THE FILEfrom flask import Flaskapp = Flask(__name__)
@app.route("/")def index(): return "Index!"
@app.route("/user/<username>")def user(username): return "Hello %s!" % username
# QUIZ: WHAT HAPPEN WHEN YOU VISIT# http://localhost:5000/user
localhost:5000/user/kiawin
WHO AM I
Hello kiawin!
PROG* - MOOOOOOORE~
# FRUIT TIME!from flask import Flaskapp = Flask(__name__)
@app.route("/fruit/<fruit_name>")def fruit(fruit_name): if fruit_name in ["durian", "jackfruit"]: return "Nooooo..." else: return "Yummy..."
# QUIZ: WHAT HAPPEN IF YOU VISIT # http://localhost:5000/
localhost:5000/fruit/durian
KING OF FRUITS
Nooooo...
localhost:5000/fruit/mangosteen
HOW ABOUT MANGOSTEEN
Yummy...
localhost:5000/fruit/DURIAN
WHAT IF?
Nooooo...
PROG* - MOOOOOOORE~
# FrUiT TiMe!from flask import Flaskapp = Flask(__name__)
@app.route("/fruit/<fruit_name>")def fruit(fruit_name): if fruit_name.lower() in ["durian", "jackfruit"]: return "Nooooo..." else: return "Yummy..."
STUFF*SLIDESslideshare.net/kiawin/learning-python-with-flask
SOURCEflask.pocoo.org/docs/0.12/quickstart
Q&A*ASK US ANYTHING