Flask vs django

download Flask vs django

If you can't read please download the document

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