python web frameworks

14
Python Web Technologies An overview of the various Python web technologies

Upload: newlug

Post on 13-May-2015

2.356 views

Category:

Technology


0 download

DESCRIPTION

Python web frameworks presentation by Nathan VanGheem. Material covered: - The major frameworks around and differences between them - Micro frameworks - Templating languages - The state of Python 3 and Python Web Technologies - Brief ditty on NoSQL with MongoDB - How to get started The presentation video and sample code is available here: http://zootlinux.blogspot.com/2011/10/october-newlug-presentation-python-web.html

TRANSCRIPT

Page 1: Python web frameworks

Python Web Technologies

An overview of the various Python web technologies

Page 2: Python web frameworks

What I'll Go Over

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

Page 3: Python web frameworks

Frameworks Covered

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

Page 4: Python web frameworks

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)

Page 5: Python web frameworks

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

Page 6: Python web frameworks

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

Page 7: Python web frameworks

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"

Page 8: Python web frameworks

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

Page 9: Python web frameworks

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

Page 10: Python web frameworks

Flask

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

Page 11: Python web frameworks

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

Page 12: Python web frameworks

Python 3 and the web

...

Some blockers:● Webob● PIL

Page 13: Python web frameworks

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 } >

Page 14: Python web frameworks

Questions

...