På OSX er (sannsynligvis) Python allerede installert. På Windows må vi installere Python selv.
Når Python og PIP er installert kan vi installere virtualenv.
> \Python27\Scripts\pip.exe install virtualenv
> pip install virtualenv
> cd path/to/my/projects
> git clone https://github.com/finnchr/flask-workshop.git
> cd flask-workshop
> \Python27\Scripts\virtualenv.exe ENV
> ENV\Scripts\activate.bat
> [sudo] virtualenv ENV
> [sudo] source ENV/bin/activate
Vi har nå laget og aktivert et lokalt pythonmiljø - nå kan vi installere pakker applikasjonen trenger.
> pip install flask
> pip install flask-sqlalchemy
Testene bruker pakken requests
(for å kjøre spørringer mot server) så vi må installere denne pakken også.
> pip install requests
> [sudo] python simple_todo_api.py
Når applikasjonen har startet skal du se dette i konsollvinduet:
--------------------------------------------------------------------------------
DEBUG in simple_todo_api [simple_todo_api.py:43]:
Create database and add example data
--------------------------------------------------------------------------------
* Running on http://localhost:5000/
* Restarting with reloader
Naviger til http://localhost:5000
> python simple_todo_api_it.py
Åpne filen simple_todo_api.py
Kun GET /api/todos
er implementert. Implementer resten av nødvendige api-kall:
- GET
/api/todos/<id>
- POST
/api/todos
- PUT
/api/todos/<id>
- DELETE
/api/todos/<id>
Det er pt. ikke mulig å prioritere oppgaver. Legg til funksjonalitet for å prioritere oppgavene.
l = [1,2,3,4] # liste
t = (1,2,3,4) # tuple
s = ‘Hello world’
s = ‘Hello ‘ + ‘World’
s = ‘Hello %s’ % (‘World’)
s = ‘Tallet er %d’ % (3)
c = s[0] # c == ‘T’
d = dict(a=1, b=2, c=3)
d = {‘a’: 1, ‘b’: 2, ‘c’: 3}
n = d[‘a’] # n == 1
n = d.get(‘a’) # n == 1
n = d.get(‘x’) # n == None
n = d.get(‘x’, 0) # n == 0
n1, n2, n3 = (1, 2, 3) # n1 == 1, n2 == 2, n3 == 3
if 1 == 1 or 2 == 2:
pass
elif 1 == 2:
pass
else:
pass
while True and n < 100:
n += 1
for n in [1, 2, 3, 4]:
pass
def my_function():
pass
def add(a, b):
return a + b
def write_message(msg='Hello world'):
print(msg)
todo = db.session.query(Todo).get(id)
todo = Todo('Lære meg Python og Flask')
db.session.add(todo)
db.session.delete(todo)
db.session.commit()
payload = flask.request.get_json()
text = payload.get('text', 'Default text')
@app.route('/my/path/<int:num>', methods=['GET', 'POST'])
def handler(num):
name = flask.request.args.get('name', 'Ola Normann')
return 'Navnet er %s og tallet er %d' % (name, num)
Typen til path-parameteren kan være string (default), int, float eller path (tilsvarende string, men aksepterer også slash).
@app.route('/my/path/<int:num>/<string:name>', methods=['GET', 'POST'])
def handler(num, name):
return 'Navnet er %s og tallet er %d' % (name, num)