Python is an interpreted general-purpose programming language. Thanks to the huge number of libraries, frameworks, and other tools, it allows solving a wide variety of tasks. In addition, this programming language is amongst the easiest to start studying because its code constructs and constructions are close to natural English. Therefore, it is not surprising that many web developers prefer Python to other languages to get a guarantee that the code they create will be extremely readable.
However, Python itself was not designed specifically for web development from the start. That is why to create a website or a web application you must use one of the numerous web frameworks. In this article, we will discuss the most popular web frameworks for Python that would be in demand in 2018.
Having tested a number of solutions for Python, we assembled our own list of the top five among the most used frameworks. Let us get acquainted with these in more detail.
Our Python frameworks list is opened with Django. In fact, it is exactly thanks to this framework that several hundred truly successful projects were created and Python is amongst the programming languages most used for web development. The list of these services includes such world-famous resources and web applications as Instagram, Mozilla Firefox, National Geographic, Pinterest, NASA, etc.
That is why for most developers who actively practice Python in their projects, Django is the only development environment truly worthy of mention. In particular, Django CMS was chosen as a base for many websites due to the array of features:
Thanks to all these aspects, Django can be used to develop solutions of any scale. Does it impress you? If not, let us continue.
CherryPy is the second most popular Python-based web framework after Django. Its main feature is a possibility to run several web servers simultaneously. The main difference between Django and CherryPy is that the latter does not generate a large amount of template code as the former does but instead provides a library that is imported into the project. In practice, this gives developers much more flexibility - with CherryPy you can enable/disable any variations of templates, authorization methods and databases.
In addition, it is supplied with an extremely minimalistic low-level development environment, which, in fact, is an add-on over the HTTP protocol and allows interaction with all kinds of servers (Apache, for example). If you are new to web development, keep in mind that there may be a need for a wider toolset in your project (though, we should definitely mention that CherryPy offers the possibility to configure each module of the created software separately and has an extensive plugin repository).
TurboGears is an Model-View-Controller (MVC) architecture framework for the development of web applications based on several WSGI components such as SQLAlchemy, Ming, Repoze; template engines such as Genshi, Kajiki, Cheetah, Myghty, and a number of libraries and middleware. It comes with a system of widgets that can greatly facilitate the creation of typical functionality. This solution can connect both with relational (via SQLAlchemy) and No-SQL databases (MongoDB via Ming, for instance). This fact, as well as support for horizontal data partitioning, allows programmers using TurboGears to develop highly scalable, data-driven web applications.
The main features of TurboGears also include such capabilities as form validation with FormEncode; use of Gearbox as a project management toolkit and means to serve applications (though, current branch also allows using Apache or Nginx as a web server); a lot of useful tools for CLI; support for integration of MochiKit, one of the Genshi’s libraries for processing textual content (XML, HTML, etc.) in web, as well as libraries for creating UI and ToscaWidgets servers. In general, all these conveniences make this framework truly irreplaceable for Python programmers. And last but not least – many developers that work with TurboGears note the usefulness of its minimal mode, i.e. possibility to be launched as a micro-framework.
Flask is a fairly new web development environment, the creators of which set on a task to analyze the pros and cons of all of the most popular Python web frameworks and create something that would be the best embodiment of all the advantages, while deprived of disadvantages.
Flask is easy to learn, simple, and often used in small projects that solve one or two functions. For example, it was involved in creating the httpbin solution. Like CherryPy, this is the usual imported library, which allows the use of any DBMS and template engine. Among the Flask’s benefits is the implementation of many stages of creating web-based software in the background (which should inspire newcomers to work with it), extremely concise and clear code ("Hello, world!" application, described on the homepage contains only 3 (!!!) lines), the ability to write modular applications using blueprints, support for Django-inspired template language Jinja2, as well as a simple approach to creating API-based solutions and one-time tools (in the case of other frameworks this will take much more time and effort).
Our Python frameworks list is closed with Pyramid, created as part of the Pylons project. Pyramid is known as one of the most flexible web development frameworks in Python (especially when compared to Django). This framework allows the developer to choose anything - DBMSs, URL structure, template styles and much more. As quoted by creators:
“Megaframeworks make decisions for you. But if you don't fit their viewpoint, you end up fighting their decisions. Microframeworks force no decisions, making it easy to start. But as your application grows, you're on your own. In both cases, the focus is on the start: either too much or too little. Either way, finishing and staying finished is hard. You need a finishing-focused framework with an architectural design that scales down to getting started, then up as your application grows. Pyramid was made for just this. It's a Goldilocks Solution: not too small, not too big, just right.”
Thus, it is possible to create traditional routes-oriented RDBMS applications using SQLAlchemy without much effort. Like Flask, Pyramid supports many template languages and engines including Jinja2 and Mako but it also has an in-built solution. Moreover, this framework is compatible with Chameleon - a convenient and universal implementation of the ZPT template.
Among the universally recognized merits of Pyramid is the ability to create a full-fledged project in just one file; modifiable templates; configurable assets; flexible tools for the creation of authentication/authorization scripts; an advanced initial boot tool – pcreate; view predicates; support for both imperative and declarative configuration; HTTP-caching; built-in support for session storage, etc. Generally speaking, this framework is one of the most popular now to create large-scale projects (take Dropbox, for instance). On the other hand, this flexibility is quite a big obstacle for beginners and can easily push them off the right path.
Let us sum up. As you can see, the final choice of one of the many Python web frameworks today must occur depending on your individual needs and the specifics of the project you are working on. We, for one, are under almost identical positive imprinting from each of the above-mentioned development environments, so we definitely can not insist on choosing any of them over others.
If you have your own idea for creating a web application but have no dedicated development department, contacting the professionals for help would be the most beneficial. In particular, you can contact our team to clarify further details of the cooperation.
We will contact you, soon