Python Web Technologies

An overview of the various Python
        web technologies
What I'll Go Over

● Frameworks
● Micro Frameworks
● Templating languages
● The state of Python 3 and the web
● NOSQL
Frameworks Covered


● Django
● Pyramid
● A brief mention of Pylons and Turbogears
● Bluebream
● web2py
● Flask(micro-framework)
● Bottle
A note about WSGI

"WSGI is the Web Server Gateway Interface. It is a
specification for web servers and application servers to
communicate with web applications (though it can also be used
for more than that). It is a Python standard, described in detail
in PEP 333."

 ● Provides a way for reusable web components to easily work
   together through this specification
 ● Also allows you to easily deploy web application that follow
   this standard(gunicorn, mod_wsgi, uWSGI, etc)
Django

● "Full stack" framework
● it's own tightly integrated built-in ORM
● built-in authentication strategy
● nice, auto-"magic" backend
● one monolithic package
● no interaction really with other communities
● great for CMS-like applications
● URLs are generated from specifying regular expressions
  that map to python functions
Pyramid

● database backend agnostic but has supporting packages for
  sqlalchemy, zodb, mongodb.
● no authentication policy built-in but has supported add-ons
● great authorization policy
● small footprint, fast, well tested and very well documented
● VERY pluggable framework
● URL pattern can use traversal and routes
● "no opinion"
● add-ons can be described as "opinions" for the framework.
● demonstrating "khufu" opinion(SQLAlchemy, Jinja2,
  traversal)
● built using zope technologies with the idea of rewriting all
  the bad of zope
Turbogears and Pylons

● "Full stack" frameworks
● The pylons project has moved to using pyramid as it's
  baseline.
● turbogears and pylons already share a good deal
● soo... Pyramid, Pylons and Turbogears pretty much share a
  lot of the core technologies and just have different opinions
  about what to do with them after that
● Turbogears has the most "opinions"
Bluebream

● entreprisey
● component-driven, interfaces, adapters, etc
● zodb
● works with other database adapters(have sqlalchemy
  support)
● pyramid is built off of a lot of these components
● uses buildout
● where zope is now today
● big stack, lots of dependencies
web2py

● FULL stack
● built-in ORM
● inspired by ruby on rails(so modules and method name map
  to urls)
● admin interface with support of TTW development
● coding by convention
● not very pythonic
● lots of "magic" going on
Flask

● micro framework
● no built-in ORM support
● uses routes
● very simple
● fast development
● not as robust tools
Bottle

● Micro framework
● 1 file for whole thing
● not a very good built-in templating engine
● no built-in ORM
● initial look will seem a lot like flask
Python 3 and the web

...

Some blockers:
 ● Webob
 ● PIL
NOSQL notes(mongodb)

● json-style storage
● for massive "web scale"
● sharding, replication, file storage
● schemaless
● http://www.mongodb.org/
● mongokit - http://pypi.python.org/pypi/mongokit

 > j = { name : "mongo" }; {"name" : "mongo"} > t = { x :
 3 }; { "x" : 3 } > db.things.save(j); > db.things.save(t); >
 db.things.find(); { "_id" : ObjectId
 ("4c2209f9f3924d31102bd84a"), "name" : "mongo" } {
 "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3
 }>
Questions

...

Python web frameworks

  • 1.
    Python Web Technologies Anoverview of the various Python web technologies
  • 2.
    What I'll GoOver ● Frameworks ● Micro Frameworks ● Templating languages ● The state of Python 3 and the web ● NOSQL
  • 3.
    Frameworks Covered ● Django ●Pyramid ● A brief mention of Pylons and Turbogears ● Bluebream ● web2py ● Flask(micro-framework) ● Bottle
  • 4.
    A note aboutWSGI "WSGI is the Web Server Gateway Interface. It is a specification for web servers and application servers to communicate with web applications (though it can also be used for more than that). It is a Python standard, described in detail in PEP 333." ● Provides a way for reusable web components to easily work together through this specification ● Also allows you to easily deploy web application that follow this standard(gunicorn, mod_wsgi, uWSGI, etc)
  • 5.
    Django ● "Full stack"framework ● it's own tightly integrated built-in ORM ● built-in authentication strategy ● nice, auto-"magic" backend ● one monolithic package ● no interaction really with other communities ● great for CMS-like applications ● URLs are generated from specifying regular expressions that map to python functions
  • 6.
    Pyramid ● database backendagnostic but has supporting packages for sqlalchemy, zodb, mongodb. ● no authentication policy built-in but has supported add-ons ● great authorization policy ● small footprint, fast, well tested and very well documented ● VERY pluggable framework ● URL pattern can use traversal and routes ● "no opinion" ● add-ons can be described as "opinions" for the framework. ● demonstrating "khufu" opinion(SQLAlchemy, Jinja2, traversal) ● built using zope technologies with the idea of rewriting all the bad of zope
  • 7.
    Turbogears and Pylons ●"Full stack" frameworks ● The pylons project has moved to using pyramid as it's baseline. ● turbogears and pylons already share a good deal ● soo... Pyramid, Pylons and Turbogears pretty much share a lot of the core technologies and just have different opinions about what to do with them after that ● Turbogears has the most "opinions"
  • 8.
    Bluebream ● entreprisey ● component-driven,interfaces, adapters, etc ● zodb ● works with other database adapters(have sqlalchemy support) ● pyramid is built off of a lot of these components ● uses buildout ● where zope is now today ● big stack, lots of dependencies
  • 9.
    web2py ● FULL stack ●built-in ORM ● inspired by ruby on rails(so modules and method name map to urls) ● admin interface with support of TTW development ● coding by convention ● not very pythonic ● lots of "magic" going on
  • 10.
    Flask ● micro framework ●no built-in ORM support ● uses routes ● very simple ● fast development ● not as robust tools
  • 11.
    Bottle ● Micro framework ●1 file for whole thing ● not a very good built-in templating engine ● no built-in ORM ● initial look will seem a lot like flask
  • 12.
    Python 3 andthe web ... Some blockers: ● Webob ● PIL
  • 13.
    NOSQL notes(mongodb) ● json-stylestorage ● for massive "web scale" ● sharding, replication, file storage ● schemaless ● http://www.mongodb.org/ ● mongokit - http://pypi.python.org/pypi/mongokit > j = { name : "mongo" }; {"name" : "mongo"} > t = { x : 3 }; { "x" : 3 } > db.things.save(j); > db.things.save(t); > db.things.find(); { "_id" : ObjectId ("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }>
  • 14.