Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Flask vs django

772 Aufrufe

Veröffentlicht am

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

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×