Flask vs django
-
Upload
tomas-drencak -
Category
Documents
-
view
777 -
download
5
Transcript of Flask vs django
Django vs. FlaskPorovnanie frameworkov z hadiska modulrnych aplikci
Tom Drenk6 rokov Java
2 roky python
vinou weby a databzy
Flasky goodnessKenneth Reitz
https://speakerdeck.com/kennethreitz/flasky-goodness
Flasky goodness (or why django sucks?)
Vhody djangoModulrnos
Bezpenos
Vborn dokumentcia
Hotov django apps tretch strn
Komunita
Batteries includedAdmin interface
Console (manage.py)
Databza + ORM + migrcie
User management + autentifikcia
Session
Lokalizcia
...
Django appsDjango apps
Model + web
KampaneZkaznciNkupyFirmyProduktyFiltreEmaily
Django apps - SpaghettiDjango apps
Model + web
KampaneZkaznciNkupyFirmyProduktyFiltreEmaily
truktra Django aplikcieNstroje:
Manament
Podporn slubyWeb:
User interface
API Service
Data persistence
CRUD Admin
AutentifikciaAsynchrnne spracovanie:
Plnovan lohy
Asynchrnne lohy
truktra Django aplikcieNstroje:
Manament
Podporn slubyWeb:
User interface
API Service
Data persistence
CRUD Admin
AutentifikciaAsynchrnne spracovanie:
Plnovan lohy
Asynchrnne lohy
RieenieORTOGONALITAAleborob jednu vec a rob ju dobre
Webov aplikciaPrezentan vrstva
Dtov vrstva
Servisn
Web service
Async
Pluginy
Command line
DjangoWebServiceModelWeb serviceCommand Line
Async worker
Django APIWebServiceModelWeb serviceCommand LineAsync worker
NevhodyStrca sa DRY
Nepouiten batteries included
Nepouiten django apps tretch strn
FlaskWeb microframework
Pouva Werkzeug WSGI a Jinja2 ako template
iadne zvislosti
Bring your own batteries
Hello worldfrom flask import Flaskapp = Flask(__name__)
@app.route('/')def hello_world(): return 'Hello World!'
if __name__ == '__main__': app.run()$ python hello.py * Running on http://127.0.0.1:5000/
RozreniaFlask-SQLAlchemy - ORM
Flask-Celery
Flask-Script - manage.py
Flask-WTF - validcia formulrov
VhodyHierarchick formulre
Vetky monosti SQL
Jednoduchia prca s template
Monos uri si architektru
Pri testovan sa pouvaj relne objekty
Flask fillin testovanie formulrov v template
Routovanie nie je sekvenn
Mal kninica, nem vea Mgie
Flask APIAPIZkaznciKampaneNkupy
CeleryEmail
ModelReporting
Web
API moduly
Flask APIcreate(company, "customer", email="[email protected]", **kwargs)
read(company, "customer", 1)
update(company, "customer", 1, email="[email protected]", **kwargs)
delete(company, "customer", 1)
object_list(company, "customer", type="new", **kwargs)
object_count(company, "customer", type="new", **kwargs)
Pokrva 80 % funkcionality
Ostatn cez samostatn funkcie, napr. reporting
Flask view
@route('/', methods=['GET', 'POST'])def create_customer(id):form = CustomerForm()if form.validate_on_submit():object = marketing.create(current_user.company, 'customer', **form.data
)return redirect(url_for('customer.update', id=object.id))
return render_template('customer_form.html', form=form)
Vhody/NevhodyZvislos je len cez volanie funkcie a vrten objekt duck typing
CRUD opercie netreba vytvra
Oddelen moduly
Je potrebn si vytvra integrcie s WTForms pre lookup at
SQLAlchemyRelan vrstva
ORM vrstva sa mapuje na relan
Pln pokrytie SQL a vyuitie funkci databzy, napr. agregcie
Objektov skladanie query
Joined select loading
Agregcia prkladsession.query(Customer, Purchase.type, sum(Purchase.price)).filter(Purchase.date.between(date(2012,1,1), date(2012,12,31))).join(Purchase).group_by(Customer,Purchase.type)
select customer.*, purchase.type, sum(purchase.price) from customer join purchase on customer.id = purchase.customer_id Where purchase.date between '2012-01-01' and '2012-12-31'group_by customer.id, purchase.type
SQLAlchemy vs Django ORM
Django ORMObjektov modelIntegrcia s djangoVemi jednoduch agregcieJednoduch query sa robia ahkoNed sa optimalizovaahk joiny
SQLAlchemyRelan a ORM vrstva1:1 ku SQLOptimalizcie DBPri query cez viac tabuliek treba joinova (bez pecifikcie podmienky)
ZhrnutieDjango
Menie projekty
Jednoduch model
Viem pouva django bez prav
Flask
Vie projekty
Nutn vie investcie zo zaiatku
Reporting
D sa poui ako django