You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
<meta name="description" content="Full Stack Python shows how an entire Python web application is built and deployed. Each section of the guide explains a different key concept, from the server through the Python WSGI web framework to the front end JavaScript.">
<a class="reference external" href="http://pyvideo.org/category/3/djangocon-2011">2011</a>, as well as
<a class="reference external" href="http://pyvideo.org/category">earlier US and DjangoCon EU conferences</a> are
all available free of charge.</p>
<p>The <a class="reference external" href="http://www.reddit.com/r/django">Django subreddit</a> often has links to
the latest resources for learning Django.</p>
<p>Lincoln Loop wrote a
<a class="reference external" href="http://lincolnloop.com/django-best-practices/">Django Best Practices guide</a>
for the community.</p>
<p>Steve Losh wrote an incredibly detailed <a class="reference external" href="http://stevelosh.com/blog/2011/06/django-advice/">Django Advice guide</a>.</p>
</div>
</div>
<div class="section" id="flask">
<h2>Flask</h2>
<p><a class="reference external" href="http://flask.pocoo.org/">Flask</a> is a Python microframework deliberately
built with a
<a class="reference external" href="http://flask.pocoo.org/docs/design/">small core and easy extensibility philosophy</a>.
Flask is generally considered more
"<a class="reference external" href="http://stackoverflow.com/questions/58968/what-defines-pythonian-or-pythonic">Pythonic</a>" than Django because Flask web application code is often more
explicit. Flask was also written several years after Django and therefore
learned from the Python community's reactions as the framework evolved.
Jökull Sólberg wrote a great piece articulating to this effect in his
<a class="reference external" href="http://jokull.calepin.co/my-flask-to-django-experience.html">experience switching between Flask and Django</a>.</p>
<div class="section" id="flask-resources">
<h3>Flask resources</h3>
<p>The 18 post series Flask mega tutorial is an absolutely amazing starting
<li><a class="reference external" href="http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-x-full-text-search">Part 10: Full Text Search</a></li>
<li><a class="reference external" href="http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvi-debugging-testing-and-profiling">Part 16: Debugging, Testing and Profiling</a></li>
<li><a class="reference external" href="http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvii-deployment-on-linux-even-on-the-raspberry-pi">Part 17: Deployment on Linux</a></li>
<li><a class="reference external" href="http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xviii-deployment-on-the-heroku-cloud">Part 18: Deployment on the Heroku Cloud</a></li>
</ul>
<p>Yes, there are many parts to the series. However, each post is focused on
a single topic to contain the complexity. The whole series is well
worth an in-depth read-through. The
<a class="reference external" href="https://twitter.com/miguelgrinberg">author</a> is also writing the
<a class="reference external" href="http://shop.oreilly.com/product/0636920031116.do">O'Reilly Flask Web Development</a>
book so consider picking that up as well.</p>
<p>The <a class="reference external" href="http://flask.pocoo.org/extensions/">Flask Extensions Registry</a> is a
curated list of the best packages that extend Flask. It's the first location
to look through when you're wondering how to do something that's not in the
core framework.</p>
<p>Great post by Jeff Knupp on <a class="reference external" href="http://www.jeffknupp.com/blog/2014/01/29/productionizing-a-flask-application/">Productionizing a Flask App</a></p>
<p>The Plank & Whittle blog has two posts, one on <a class="reference external" href="http://www.plankandwhittle.com/packaging-a-flask-web-app/">Packaging a Flask web app</a>
and another on <a class="reference external" href="http://www.plankandwhittle.com/packaging-a-flask-app-in-a-debian-package/">Packaging a Flask app in a Debian package</a>
once you've built an app and want to deploy it.</p>
web framework with no external dependencies except for the standard library
included with Python.</p>
<div class="section" id="bottle-resources">
<h3>Bottle resources</h3>
<p>Digital Ocean provides an extensive <a class="reference external" href="https://www.digitalocean.com/community/articles/how-to-use-the-bottle-micro-framework-to-develop-python-web-apps">introductory post on Bottle</a>.</p>
<p>This post provides a short
<a class="reference external" href="http://www.giantflyingsaucer.com/blog/?p=3598">tutorial on getting started with Bottle</a>.</p>
<p>Here's a short code snippet for <a class="reference external" href="http://myadventuresincoding.wordpress.com/2011/01/02/creating-a-rest-api-in-python-using-bottle-and-mongodb/">creating a REST API with Bottle and MongoDB</a>.</p>
</div>
</div>
<div class="section" id="web-framework-logging">
<h2>Web Framework Logging</h2>
<p>Logging is a common mechanism for monitoring web applications written with a
web framework. Runtime exceptions that prevent code from running are
important to log to investigate and fix the source of the problems.
Informational and debugging logging also helps to understand how the
application is performing even if code is working as intended.</p>
<p>Logging is often grouped into several categories:</p>
<ol class="arabic simple">
<li>Information</li>
<li>Debug</li>
<li>Warning</li>
<li>Error</li>
</ol>
<p>Logging errors that occur while a web framework is running is crucial to
understanding how your application is performing.
<a class="reference external" href="http://raven.readthedocs.org/en/latest/">Raven</a> is a Python client for the
<a class="reference external" href="https://github.com/getsentry/sentry">Sentry</a> exception logging and
aggregation application. Raven provides the way to send exceptions to
Sentry, which should be deployed on a separate server from your production
infrastructure. Raven can also be used by Python scripts to send other
log data to Sentry for aggregation. Sentry provides a clean web application
interface for viewing the exceptions. Sentry can also be configured with a
mail plugin to send emails when exceptions occur.</p>