Webový server na 7 řádků

Tomáš Bedřich

+ 2 Mega knihoven...

% pip install flask

Collecting flask
  Using cached Flask-0.12.2-py2.py3-none-any.whl
Collecting Jinja2>=2.4 (from flask)
  Using cached Jinja2-2.9.6-py2.py3-none-any.whl
Collecting Werkzeug>=0.7 (from flask)
  Using cached Werkzeug-0.12.2-py2.py3-none-any.whl
Collecting click>=2.0 (from flask)
  Using cached click-6.7-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from flask)
  Using cached itsdangerous-0.24.tar.gz
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask)
  Using cached MarkupSafe-1.0.tar.gz
Installing collected packages: MarkupSafe, Jinja2, Werkzeug,
    click, itsdangerous, flask
Successfully installed
from flask import Flask

app = Flask('moje-aplikace')


@app.route('/')
def pozdrav():
    return 'Ahoj'


if __name__ == '__main__':
    app.run(debug=True)

HTML šablony

from flask import render_template

@app.route('/sablona')
def pozdrav_se_sablonou():
    return render_template('pozdrav.html')
render_template('pozdrav.html', pozdrav='Ahoj', jmeno='Franto')
<html>
<head> ... </head>
<body>
    {{ pozdrav }}, jak se máš {{ jmeno }}?
</body>
</html>

Data
DATA
DATA!

z URL

(např.: http://www.policie.cz/admin/smazat-uzivatele/0)
@app.route('/obrazek/<int:cislo>')
def zobraz_obrazek(cislo):
    return render_template('obrazek.html', cislo=cislo)

z query stringu

from flask import request

@app.route('/obrazek')
def zobraz_obrazek():
    cislo = request.args['cislo']

z formuláře

@app.route('/obrazek', methods=['POST'])
def zobraz_obrazek():
    cislo = request.form['cislo']

Sessions

from flask import session

@app.route('/prihlaseni')
def prihlaseni():
    session['uzivatel'] = 'franta123'

Další triky...

from flask import url_for

url_for('zobraz_obrazek')
from flask import redirect

@app.route('/presmeruj_na_root')
def presmeruj_na_root():
    return redirect('http://root.cz')
@app.errorhandler(404)
def nenalezeno():
    return render_template('nenalezeno.html'), 404

Flask

+ jednoduchý do začátku

+ perfektně rozšiřitelný

+ na malé aplikace/API

+ nic vám nenutí
 

– nic vám nenutí

– složitější uvnitř

Co na tom jede?

heurekadevs.cz/ctvrty-fialovy

Tomáš Bedřich

@tbedrich

Webový server na 7 řádků

By Tomáš Bedřich

Webový server na 7 řádků

  • 1,080