A Python Web Framework is a library that creates a structure for the web application development. It allows developers to cut down the development time, focus more on process logic and automating the whole implementation, which in-turn makes the life of a developer trouble-free.
You need to gather information about purpose, size, and complexity of the project before deciding on which framework to use. If your project contains a hefty system which includes chock-full of features and requirements, a full-stack framework will be an ideal choice for you. If your project is trivial and simple, consider a micro framework.
Full-stack frameworks do the heavy lifting in creating python applications. It tries to provide a complete solution for the developers including libraries, templating engines, and database management. Here are some of the most popular full-stack frameworks.
Django is a free, open-source, and high-level full-stack framework that assists developers to create web applications rapidly and with minimal code. It emphasizes automation and sticks closely to the Don’t Repeat Yourself (DRY) Principle. It follows an approach called “batteries included” which means it comprises everything which a developer looks for to jump-start the application development.
Originally developed for the content management system, but it now offers out-of-the-box features like:
- URL routing
- Object-relational mapper(ORM)
- Automatic database generation
- DB access layer
- Automatic admin interface generation
Django is ideal for developers who:
- Like to share ideas amongst themselves via online forums
- Like to develop faster with powerful built-in tools
- Aim to include all batteries a web application might need
It is known for being friendly to beginners, fast to build, and extremely well-documented, which is not available with other options. There are major databases that work with Django:
It is used by giant companies Instagram, Pinterest, Disqus, Mozilla, The Washington Times and Bitbucket or you can find a large list of websites at Djangosites.org.
Pyramid is the framework for both small and large applications and successor to the known Pylons. It cannot be technically called as a full-stack framework because it builds itself as “Goldilocks” framework.
Pyramid community is growing fast because it is lightweight, which means, it does not leave you when your app grows and becomes feature-rich, but does not make any assumptions about the components of your site.
Pyramid is ideal for:
- Getting started quickly.
- Developers who are working rapidly on projects based on API.
- Building large web applications, such as a CMS or a KMS.
- Prototyping a concept.
With outstanding documentation, it allows developers to maintain progress throughout development without having to rely fully on the community support. Some great features of Pyramid includes:
- Single-file applications
- URL generation
- Extensible configuration
- Asset specifications
- Function decorators
You can swap nearly all the components of Pyramid. It gives a choice — how you want to connect to a database and what type of database you want to be able to connect to.
Unlike Django, it does not enforce certain choices for you, it also tries to cast-down the type of “magic” features that handle some tasks automatically, and it might not behave in a particular manner sometimes. It provides flexible authentication and authorization along with testing, support, and comprehensive data documentation.
TurboGears is an open-source MVC framework. It allows you to develop data-driven web applications by mashing together some of the great components available. Instead of reinventing the wheel, it uses SQLAlchemy, Repose, Genshi, and Tosca Widget to develop applications quickly.
TurboGears features include:
- Real multi-database support
- Command-line tools
- Robust templates
- Ajax for server and browser
- Pluggable applications
- Widget system
- Horizontal-data partitioning.
TurboGears is ideal for:
- Simplifying development of Ajax applications.
- Support for multiple data-exchange formats.
- Data persistence.
It is chosen by great sites like SourceForge, Bisque, ShowMeDo and for a detailed list, look at TurboGears websites. Its PyPI package is known as tg,devtools. Unlike Django, you can develop using TurboGears as it is both a full-stack framework and a micro-framework with the installation of some additional components.
Web2Py is a scalable full-stack framework for developing web applications. It is well-supported with book-length documentation and an avid community behind it. Everything related to development, testing, and database administration can be handled by web interface in Web2py.
The major feature is that Web2py comes with its own IDE which includes:
- Bug ticketing system
- One-click deployment.
It works with multiple databases, such as MySQL, SQLite, and Oracle. Sites that use Web2py are PikHotel, Braga TV, Formatics, and Tech Fuel.
It has been a decade behind the latest version of Python but it is still appealing to some of the developers because it is extremely easy to learn like Django, flexible like pyramid and extremely portable.
Web2py lacks in providing some all-embracing features and it will suit your needs if your organization is committed to Python 2. Unlike others, it does not support Python 3.
Non-Full Stack Framework
Bottle is a simple framework for developing small applications. It has a capability to adapt to many third-party template engines. It was originally meant for creating APIs but now it is able to implement everything under single-source file which gives you an idea of how “micro” it is designed to be.
Bottle framework is ideal for:
- Creating a web API.
- Learning the composition of web frameworks.
- Building simple and personal applications.
Bottle features include:
- Request-dispatching routes with URL-parameter support
- Basic abstraction
- Key/value database
- In-built HTTP server
Unlike others, it has no dependencies except the Python Standard Library. Despite being small in size, it was used by Netflix to build its web interface.
CherryPy is an open-source web framework that embeds its own multi-threaded server. It can run on any operating system that supports Python.
CherryPy features include:
- Thread-pooled web server
- Configuration system
- Plugin system.
It is a minimalist web framework, it allows you to use any type of technology for data access, templating, and so on. Nevertheless, it is able to do everything that a web framework can, for example, file uploads, handle sessions, cookies, and static.
Application made using Bottle include Wikitests, Netflix, Indigo, and Urbanility.
Despite all of the available features and advantages like running on multiple platforms, built-in support for profiling, coverage, and testing, some of the developers might think that there is a need for making a more easy and improved documentation. It does not force you to use any certain template engine, ORM, so you can use whatever you want to use.
Flask is the most popular micro-framework for Python inspired by “Sinatra Ruby” framework. It is available under BSD license and depends on Werkzeug WSGI toolkit and Jinja2 template.
It consists of a number of out-of-the-box features, such as:
- Built-in development server
- Fast debugger
- RESTful request dispatching
- Jinja2 templating
- Client-side sessions
- HTTP request handling
- Unicode-based and ability to plug in any ORM
Companies that use Flask are Papyrus Research, Punchfork, and Nuxeo.
Flask is ideal for:
- Learning programming.
- People who care about best practices and “tasteful” codes.
- Standalone application development.
Like Django, it is designed to develop web apps as quickly as possible but it is far more suited to smaller and simpler projects. Despite being small in size, it has been used by big-shot companies like LinkedIn and Pinterest. Some developers prefer Flask to Django because Flask is more “pythonic”, in that it mostly obeys the Python mantra of “being one way to create something and code should always be explicit about what is that you are doing”.
It is difficult to single out the best Python web framework since, to select which framework will be better suited for you, depends upon the purpose and scope of your project, large or small. The distinction made between top-of-the-list Python framework is that beyond practical applications, each framework has its own capabilities.
- Django has forms, templating, routing, database administration, and authentication, try it if you want to develop something rich.
2. Pyramid consists of routing and authentication it requires external libraries for templating and database administration, try it if you want to develop something rich, but extraordinary.
3. Bottle has routing, templating, and small abstraction, unlike others.
4. Flask is the youngest one amongst others, started in mid of 2010. Try Flask if you are looking to develop something simple.