A platform-as-a-service (PaaS) provides infrastructure and a software layer on which a web application is deployed. Running your web application from a PaaS removes the need to know as much about the underlying servers, operating system, web server, and often the WSGI server.
Note: If you are not interested in deploying to a PaaS you can move ahead to the WSGI servers section.
The PaaS layer defines how the application accesses resources such as computing time, files, and external services. The PaaS provides a higher-level abstraction for working with computing resources than deploying an application to a server or IaaS.
A PaaS makes deployment and operations easier because it forces the developer to conform applications to the PaaS architecture.
Heroku, Google App Engine, Gondor, and OpenShift are platform-as-services that support Python web applications. Each one requires varying tradeoffs to deploy to their respective platforms.
If you go the PaaS route, you can skip over the operating system and web server sections because they are baked into PaaS offerings. PaaS offerings generally start at the WSGI server layer.
PaaS bakeoff: Comparing Stackato, OpenShift, Dotcloud and Heroku for Django hosting and deployment by Nate Aune
DevOps Django and Heroku Series by Randall Degges:
Deploying Django by Randall Degges is another great free resource about Heroku.