Django vs. Flask              Porovnanie frameworkov z            hľadiska modulárnych aplikácií
Tomáš Drenčákl    6 rokov Javal    2 roky pythonl    väčšinou weby a databázy
Flasky goodnessl    Kenneth Reitz    l https://speakerdeck.com/kennethreitz/flasky-goodness    l Flasky goodness (or why d...
Výhody djangol    Modulárnosťl    Bezpečnosťl    Výborná dokumentácial    Hotové django apps tretích stránl    Komunita
Batteries includedl    Admin interfacel    Console (manage.py)l    Databáza + ORM + migráciel    User management + autenti...
Django appsl    Django appsl    Model + web                        Firmy                    Kampane                    Zák...
Django apps - Spaghettil    Django appsl    Model + web                        Firmy                    Kampane           ...
Štruktúra Django aplikácie                                       Asynchrónne spracovanie:  Nástroje:         Web:         ...
Štruktúra Django aplikácie                                       Asynchrónne spracovanie:  Nástroje:         Web:         ...
Riešenie                 ORTOGONALITA                      Alebo           rob jednu vec a rob ju dobre
Webová aplikácial    Prezentačná vrstva   l                             Web servicel    Dátová vrstva        l            ...
Django                           Model          Web         Web service     Service         Command Line                  ...
Django API                             Model              Web                             Service             Web service ...
Nevýhodyl    Stráca sa DRYl    Nepoužiteľné batteries includedl    Nepoužiteľné django apps tretích strán
Flaskl    Web microframeworkl    Používa Werkzeug WSGI a Jinja2 ako templatel    Žiadne závislostil    Bring your own batt...
Hello world from flask import Flask app = Flask(__name__) @app.route(/) def hello_world():   return Hello World! if __name...
Rozšírenial    Flask-SQLAlchemy - ORMl    Flask-Celeryl    Flask-Script - manage.pyl    Flask-WTF - validácia formulárov
Výhody    Hierarchické formuláre    Všetky možnosti SQL    Jednoduchšia práca s template    Možnosť určiť si architekt...
Flask API      Web               API moduly                           Model      Zákazníci                          Report...
Flask APIl    create(company, "customer", email="test@example.com", **kwargs)l    read(company, "customer", 1)l    update(...
Flask view@route(/, methods=[GET, POST])def create_customer(id):  form = CustomerForm()  if form.validate_on_submit():    ...
Výhody/Nevýhodyl    Závislosť je len cez volanie funkcie a vrátený objekt – duck typingl    CRUD operácie netreba vytvárať...
SQLAlchemyRelačná vrstvaORM vrstva sa mapuje na relačnúPlné pokrytie SQL a využitie funkcií databázy, napr. agregácieObjek...
Agregácia príkladsession.query(      Customer,      Purchase.type,      sum(Purchase.price)).filter(Purchase.date.between(...
SQLAlchemy vs Django          ORMDjango ORM                   SQLAlchemyObjektový model              Relačná a ORM vrstvaI...
Zhrnutiel    Django    l Menšie projekty    l Jednoduchý model    l Viem používať django bez úpravl    Flask    l Väčšie p...
Upcoming SlideShare
Loading in …5
×

Flask vs django

674 views
626 views

Published on

Porovnanie frameworkov z
hľadiska modulárnych aplikácií

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
674
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Flask vs django

  1. 1. Django vs. Flask Porovnanie frameworkov z hľadiska modulárnych aplikácií
  2. 2. Tomáš Drenčákl 6 rokov Javal 2 roky pythonl väčšinou weby a databázy
  3. 3. Flasky goodnessl Kenneth Reitz l https://speakerdeck.com/kennethreitz/flasky-goodness l Flasky goodness (or why django sucks?)
  4. 4. Výhody djangol Modulárnosťl Bezpečnosťl Výborná dokumentácial Hotové django apps tretích stránl Komunita
  5. 5. Batteries includedl Admin interfacel Console (manage.py)l Databáza + ORM + migráciel User management + autentifikácial Sessionl Lokalizácial ...
  6. 6. Django appsl Django appsl Model + web Firmy Kampane Zákazníci Nákupy Emaily Filtre Produkty
  7. 7. Django apps - Spaghettil Django appsl Model + web Firmy Kampane Zákazníci Nákupy Emaily Filtre Produkty
  8. 8. Štruktúra Django aplikácie Asynchrónne spracovanie: Nástroje: Web: Plánované úlohy Manažment User interface Asynchrónne úlohy Podporné služby API Service Data persistence CRUD Admin Autentifikácia
  9. 9. Štruktúra Django aplikácie Asynchrónne spracovanie: Nástroje: Web: Plánované úlohy Manažment User interface Asynchrónne úlohy Podporné služby API Service Data persistence CRUD Admin Autentifikácia
  10. 10. Riešenie ORTOGONALITA Alebo rob jednu vec a rob ju dobre
  11. 11. Webová aplikácial Prezentačná vrstva l Web servicel Dátová vrstva l Asyncl Servisná l Pluginy l Command line
  12. 12. Django Model Web Web service Service Command Line Async worker
  13. 13. Django API Model Web Service Web service Command Line Async worker
  14. 14. Nevýhodyl Stráca sa DRYl Nepoužiteľné batteries includedl Nepoužiteľné django apps tretích strán
  15. 15. Flaskl Web microframeworkl Používa Werkzeug WSGI a Jinja2 ako templatel Žiadne závislostil Bring your own batteries
  16. 16. Hello world from flask import Flask app = 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/
  17. 17. Rozšírenial Flask-SQLAlchemy - ORMl Flask-Celeryl Flask-Script - manage.pyl Flask-WTF - validácia formulárov
  18. 18. Výhody Hierarchické formuláre Všetky možnosti SQL Jednoduchšia práca s template Možnosť určiť si architektúru Pri testovaní sa používajú reálne objekty Flask fillin – testovanie formulárov v template Routovanie nie je sekvenčné Malá knižnica, nemá veľa „Mágie“
  19. 19. Flask API Web API moduly Model Zákazníci Reporting Kampane API Email Nákupy Celery
  20. 20. Flask APIl create(company, "customer", email="test@example.com", **kwargs)l read(company, "customer", 1)l update(company, "customer", 1, email="another@example.com", **kwargs)l delete(company, "customer", 1)l object_list(company, "customer", type="new", **kwargs)l object_count(company, "customer", type="new", **kwargs)l Pokrýva 80 % funkcionalityl Ostatné cez samostatné funkcie, napr. reporting
  21. 21. 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)
  22. 22. Výhody/Nevýhodyl Závislosť je len cez volanie funkcie a vrátený objekt – duck typingl CRUD operácie netreba vytváraťl Oddelené modulyl Je potrebné si vytvárať integrácie s WTForms pre lookup atď
  23. 23. SQLAlchemyRelačná vrstvaORM vrstva sa mapuje na relačnúPlné pokrytie SQL a využitie funkcií databázy, napr. agregácieObjektové skladanie queryJoined select loading
  24. 24. Agregácia príkladsession.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_idWhere purchase.date between 2012-01-01 and 2012-12-31group_by customer.id, purchase.type
  25. 25. SQLAlchemy vs Django ORMDjango ORM SQLAlchemyObjektový model Relačná a ORM vrstvaIntegrácia s django 1:1 ku SQLVeľmi jednoduché agregácieJednoduché query sa robia Optimalizácie DBľahko Pri query cez viacNedá sa optimalizovať tabuliek treba joinovaťĽahké joiny (bez špecifikácie podmienky)
  26. 26. Zhrnutiel Django l Menšie projekty l Jednoduchý model l Viem používať django bez úpravl Flask l Väčšie projekty l Nutné väčšie investície zo začiatku l Reporting l Dá sa použiť ako django

×