(CMS ) ✦ Board Chair of PyCon JP (Japan) ✦ Board of Python ED (Japan) ✦ Plone Foundation Ambassador ✦ PSF Contributing member ✦ Member of NVDA Japanese Team !2 Manabu TERADA (@terapyon)
Tokyo, Japan ✦ We use Plone for building web sites ✦ Universities, Public institutions ✦ Engineering companies ✦ Supporting education tools !3 CMScom (CMS )
how do we design the framework (Web ) List of functions for a Web Framework (Web ) List of Web Frameworks and introduction of features for each framework (Web ) How to choose a Web Framework for your project ( ?) !5
form URL to the content ✦ (URL URL ) ✦ Routing ( ) ✦ traversal ( ) ✦ Handling POST or GET (POST GET ) ✦ HTML Templates (HTML ) ✦ Database connection ( ) ✦ sessions and cookies ( ) !11 to design the framework in this talk
) ✦ HTML Template ✦ URL dispatcher ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ Run command or manage daemon ✦ REST API ✦ Handling local data ✦ Async server ✦ Setting up and managing environment data !13
) ✦ Building a HTML in dynamic ✦ ( HTML ) ✦ Set to parts of some templates ✦ ( ) ✦ Template inheritance ✦ ( ) ✦ ltering or running tiny functions ✦ ( ) ✦ control of loop and condition ✦ ( ) ✦ List of Template engine ✦ DTE(Django Template Engine) ✦ jinja2 ✦ mako ✦ Chameleon / ZPT !14
Inspecting URL ✦ (URL ) ✦ Routing ✦ ( ) ✦ Finding the function or the content ✦ ( ) ✦ Type of URL dispatcher ✦ Routing ✦ like url.py as Django ✦ decorator ✦ Object Traversal !15
supported ✦ ( ) ✦ but each frameworks are di erent approach ✦ ( ) ✦ argument ( ) ✦ global variable of local thread ( ) !16 Managing Requested Objects (Request )
supported ✦ ( ) ✦ some frameworks supported by ad-don ✦ ( ) ✦ some frameworks does NOT support, Needing to make if you want ✦ ( ) !19 Managing users ( )
Databases ( ) ✦ Django ORM for RDBMS ✦ SQLAlchemy for RDBMS ✦ KVS ✦ Object DB ✦ Managing data in Database ( ) ✦ Data management for record or content !20 Persistent layer ( )
and more ✦ RESTfull API ✦ some frameworks supported ✦ ( ) ✦ some frameworks supported by ad-don ✦ ( ) ✦ some frameworks does NOT support, Needing to make if you want ✦ ( ) !23 REST API
BSD license ✦ First release on PyPi 1.0.1 / May 18, 2010 ✦ Lasted release 2.1.4 in Jan 1, 2019 ✦ Full stack all in one Web Framework ✦ ( Web ) !28 Django
✦ HTML Template ✦ URL dispatcher ✦ url.py ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ only ORM (Need a SQL server) ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API (Add-on DRF) ✦ Handling local data ✦ Using request object ✦ Async server ✦ Setting up and managing environment data ✦ Python code !30
Ronacher) ✦ BSD licensed ✦ First release on PyPi 0.1 / Apr 16, 2010 ✦ Lasted release 1.0.2 in Jan 1, 2019 ✦ Simple and useful Web Framework ✦ ( Web ) !31 Flask
HTML Template ✦ URL dispatcher ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ ORM (Add-on) ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API (Add-on ask-restplus) ✦ Handling local data ✦ global variable ✦ Async server ✦ Setting up and managing environment data ✦ Python code or ini le !33
Public License (BSD-like) ✦ First release on PyPi 1.0 / Jan 31, 2011 ✦ Lasted release 1.10.1 in Jan 1, 2019 ✦ Full support Web Framework ✦ Web !34 Pyramid
HTML Template ✦ Add-on (choosing any template) ✦ URL dispatcher ✦ decorator ✦ traversal ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ ORM or ZODB ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ context object ✦ Async server ✦ a part of support ✦ Setting up and managing environment data ✦ ini le !36
(Plone Foundation) ✦ Zope Public License ✦ First release before 2000 ✦ Lasted release 2.13.28 / 4.0a in Jan 1, 2019 ✦ Full stack biggest Web Framework ✦ Web !37 Zope
HTML Template ✦ URL dispatcher ✦ object traversal ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Include a Object DB (ZODB) ✦ Manage data in a Database ✦ Web server ✦ Original or WSGI ✦ Run command or manage daemon ✦ REST API ✦ Add-on ✦ Handling local data ✦ context object ✦ Async server ✦ Setting up and managing environment data ✦ Conf le by buildout !39
FriendFeed) ✦ Apache License, Version 2.0 ✦ First release on PyPi 0.2 / May 18, 2010 ✦ Lasted release 5.1.1 in Jan 1, 2019 (now 6.0 already released) ✦ Asynchronous Web Framework ✦ ( Web ) !40 Tornado
HTML Template ✦ Original ✦ URL dispatcher ✦ Register ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ Original ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ ?? ✦ Async server ✦ Setting up and managing environment data ✦ ?? !42
HTML Template ✦ URL dispatcher ✦ Register ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ Original ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ Async server ✦ Setting up and managing environment data !45
Nathan Van Gheem (Plone Foundation) ✦ BSD license ✦ First release on PyPi 1.3.0 / Aug 1, 2017 ✦ Lasted release 4.4.0 in Jan 1, 2019 ✦ AsyncIO REST API Framework for Object model ✦ ( REST API ) !46 Guillotina
HTML Template ✦ URL dispatcher ✦ object traversal ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Special connector to PostgreSQL ✦ Manage data in a Database ✦ Web server ✦ Run command or manage daemon ✦ REST API ✦ Handling local data ✦ context ✦ Async server ✦ Setting up and managing environment data ✦ yaml !48
HTML Template ✦ Add-on (choosing any template) ✦ URL dispatcher ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ ORM (add-on) ✦ Manage data in a Database ✦ Web server ✦ Test server ✦ Support WSGI ✦ Run command or manage daemon ✦ REST API ✦ Need to make a code ✦ Handling local data ✦ Async server ✦ Setting up and managing environment data !51
License, Version 2.0 ✦ First release on PyPi 0.0.0 / Oct 9, 2018 ✦ Lasted release 1.1.2 in Jan 1, 2019 (now 1.3 already released) ✦ ASGI app for API server ✦ (ASGI API ) !52 responder
HTML Template ✦ jinja2 ✦ URL dispatcher ✦ decorator ✦ Managing Requests ✦ Managing cookies ✦ Login function ✦ Managing users ✦ Persistent layer ✦ Type of Databases ✦ Manage data in a Database ✦ Web server ✦ ASGI?? ✦ Run command or manage daemon ✦ REST API ✦ Handling local data ✦ ?? ✦ Async server ✦ Setting up and managing environment data ✦ ?? !54