Python web frameworks
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


Python web frameworks



Python web frameworks presentation by Nathan VanGheem. ...

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:



Total Views
Views on SlideShare
Embed Views



10 Embeds 204 172 18 4 3 2 1 1 1 1 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NoDerivs LicenseCC Attribution-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Python web frameworks Presentation Transcript

  • 1. Python Web TechnologiesAn overview of the various Python web technologies
  • 2. What Ill Go Over● 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 about WSGI"WSGI is the Web Server Gateway Interface. It is aspecification for web servers and application servers tocommunicate with web applications (though it can also be usedfor more than that). It is a Python standard, described in detailin 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● its 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 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
  • 7. Turbogears and Pylons● "Full stack" frameworks● The pylons project has moved to using pyramid as its 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 and the web...Some blockers: ● Webob ● PIL
  • 13. NOSQL notes(mongodb)● json-style storage● for massive "web scale"● sharding, replication, file storage● schemaless●● mongokit - > j = { name : "mongo" }; {"name" : "mongo"} > t = { x : 3 }; { "x" : 3 } >; >; > db.things.find(); { "_id" : ObjectId ("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }>
  • 14. Questions...