开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《护眼模式 GitHub-Dark》
今日推荐英文原文:《A Complete Guide to Python Web Frameworks》

今日推荐开源项目:《护眼模式 GitHub-Dark》传送门:GitHub链接
推荐理由:用过各种读书 app 的朋友兴许都知道这世界上有个叫做护眼模式的东西——如果你能在周围一片漆黑的时候打开它,看起来会很舒服。这个项目就是 GitHub 的护眼模式,如果你经常需要在一片漆黑下对着你的电脑的话,兴许可以尝试使用它——Your eyes will ❤️ you.
今日推荐英文原文:《A Complete Guide to Python Web Frameworks》作者:Premjith B P K
推荐理由:关于 Python 中流行 web 框架的介绍

A Complete Guide to Python Web Frameworks

Web frameworks are code libraries that make Web development faster and easier. The versatile programming language, Python, has many Web frameworks like Django, Web2py, Flask, Bottle, etc. We take a closer look at these in this article.

Python is a valuable and flexible programming language designed specifically for teams trying to get a Web application up and running. Developers and frameworks are closely related since they are the building blocks of the products being crafted. With such frameworks, a set of solutions is born, thereby allowing the developer to focus more on the app logic rather than repetitive and other low-priority tasks.

Nowadays, developers try Python’s robust collection of frameworks to deal with the details of the implementation, which helps to hasten the development and prototyping process. There are various well known Python Web frameworks out there – from vigorous full-stack frameworks specifically designed for enterprise based solutions to ultra-lightweight micro-frameworks streamlined for developing small and specialised tools.

Python Web frameworks help in greatly cutting down the cost, the effort and the time spent on Web app development. We will share some key functionalities of these intriguing frameworks to help you during Web application development. In this article we aim to help you settle on the best framework, based on your needs.

What are Web frameworks?

Web frameworks enable developers to create Web applications and services without getting into the details like sockets, protocols, thread management, etc. Some of the common duties of a Web framework are to handle cookies, get form parameters, deal with sessions, etc. There are two main types of frameworks available – the full-stack and the micro-framework.

Full-stack or micro-framework?

You should be extremely focused while picking a framework, and the key things to consider should be the size and sophistication of the project. In case you’re hoping to get a function-oriented Web application that will collaborate with the rest of your association’s frameworks, then a full-stack alternative could help your team both in terms of time and effort. However, if you’re working on a small and relatively simple project with minimal requirements, a micro-framework is your best bet. A related question is: how much effort will you require from the framework? A full-stack Web framework should have all the components you require to develop a fully functional Web app – frame generators, access lists, templating, etc – so your team can assemble the page or app as per requirements. This is an alluring option for teams that are attempting to build a product quickly, since it enables them to focus only on the development of the app and not everything else that revolves around it. In any case, if you have sophisticated custom requirements or are already working with different types of custom software, you can’t exploit those libraries.

Full-stack frameworks

There are a whole new set of full-stack options available among Python frameworks. Some of the prominent frameworks are TurboGears 2, Pylons, and Web2py. But the most popular one among them is Django.

Django: This is the most well-known Python framework and anyone can easily justify the reason behind it. A huge number of websites already use Django, from publishing houses to social media and sharing sites to significant establishments and non-profits. Since Django was initially developed for use in the newsroom, it’s not a big deal that dailies like the Washington Post and The Guardian work on this framework. New companies and startups like Eventbrite and Disqus have migrated to Django to improve conversion rates, while social media giants like Instagram and Pinterest have used it to control their dynamic Web apps.

When considered as a framework, Django is known for being quick to build and friendly for amateur developers. It’s a ‘batteries included’ framework, which means it supplies all the basic components you require such as authentication, rendering template, ORM, routing, etc. It’s also well documented, which isn’t the case with some other mainstream Web frameworks.

Django can considerably reduce the time taken to bootstrap a new project by dealing with a lot of choices. However, what you gain in speed can be lost in long-term flexibility. For instance, the inbuilt ORM of Django works efficiently in major scenarios. However, it’s not as ground breaking as SQLAlchemy, which is also termed the best Python database abstraction tool. While you can hypothetically use SQLAlchemy with Django, you’ll lose out on some major functionalities that make Django so appealing to start with.

Web2py: This is another prominent full-stack framework. One thing to remember about Web2py is that it isn’t compatible with Python 3. The original developers behind Web2py have guaranteed a compatible successor for Python 3, but haven’t launched it till now.

Even though it is ten years behind the most recent version of Python, Web2py is still used by many major enterprises, including multinational banks. What makes this older Web framework still engaging for developers is its unique functionalities. For one, it’s as simple and easy to learn as Django, and is more flexible and portable too. The same code can be employed for almost any VPS with a SQL database or MongoDB, regardless of whether AWS or Google App Engine are used.

Web2py has got intense support — it is well-documented and has a strong community behind it. Another perfect element is that Web2py is accompanied by its very own IDE that incorporates a code editor, debugger, bug ticketing framework, a single tick deployment, etc. If your organisation is focused on Python 2 for the coming years or you intend to make use of some more established Python libraries and software, then Web2py could perfectly suit your requirements.

Pyramid: Pyramid isn’t exactly a full-stack framework but bills itself as the Goldilocks framework. Pyramid is enriched with features without forcing any particular way of getting things done on users. It is lightweight without leaving you all alone as your app develops. It’s one of the most loved Web frameworks among experienced Python developers on account of its transparency and modularity, and has been used by both moderately sized teams as well as tech giants like Mozilla, Yelp, SurveyMonkey and Dropbox.

In reality, almost every component of a Pyramid framework can be swapped out. You can pick how you interface with a database, or even what type (or types) of databases you want to connect with. It doesn’t authorise certain choices for you like Django does, and it also discourages some ‘magic’ features which handle certain assignments automatically. It also doesn’t behave in an anticipated or attractive way.

Pyramid is popular because of its security solutions, which make it simple to set up and to check access control records. Another innovative functionality worth mentioning is Pyramid’s Traversal system for mapping URLs to code, which eventually makes it easy to build RESTful APIs.


Consider the possibility that you don’t need handholding or the sophistication of a full-stack framework. Nowadays, modern Web apps require lots of moving parts, including database abstraction, frame approval and modified access control records. But there are a lot of Web applications that don’t require any of it. For such projects, a micro-framework might be exactly what’s required.

These ultra-lightweight frameworks are developed to get dead Web apps up and running as fast as possible. Their capabilities are minimal by design– any functionality you could get by installing another library is intentionally left out. An advantage of working with this moderate approach is that your code can be cleaner and the site quicker. This is because micro-frameworks are less abstracted than full-stack structures. The code you compose will be significantly closer to HTTP capacities than with a more beginner-friendly framework.

Flask: Flask is undoubtedly the most famous micro-framework for Python and a standout amongst the most well-known Python structures, period. Like Django, it was developed to get Web applications up and running as fast and effortlessly as possible. Regardless of its tiny size, Flask has been used by huge organisations, including LinkedIn and Pinterest.

In any case, here’s the twist – since Flask is ideal for smaller, easier projects than Django, you can expect Web server development, support for Google App Engine and inbuilt unit testing. There is no database abstraction layer, form verification and validation, and auto upload features are disabled. However, every one of these features can be included via extensions. Some key setups incorporate SQLAlchemy for the database or Jinja2 for templating and CouchDB.

Some Python designers opt for Flask rather than Django on the grounds that the former is increasingly pythonic, in that, it generally adheres to the Python mantra of there being one approach to accomplish something, and that code ought to be clear about what it’s doing. In case you prefer clean code from scratch, Flask might be a decent alternative.

Bottle: Bottle is another prominent micro-framework. It was initially developed for building Web APIs, which is still an excellent use case for it. What is more intriguing about Bottle is that it tries to execute everything in one single document, which should give you a brief idea of how micro it is designed to be.

The out-of-the-box functionalities include templating, routing, utilities, and some fundamental abstraction over the WSGI standard. Like Flask, you’ll be coding significantly nearer to the metal than with a full-stack system. Regardless of that, Bottle has been employed by Netflix to create Web interfaces.

Other popular frameworks

We’ve gone through some of the most widely used Python systems, yet there are a variety of options you could choose from. We’ll quickly take a look at a couple of others which could perform well in particular circumstances.

Tornado is a Python Web framework particularly developed to tackle the C10k issue (i.e., it can deal with over 10,000 simultaneous connections if properly configured) using asynchronous I/O. This gives it solid appeal for projects that require elite and countless concurrent users.

CubicWeb is an intriguing Web framework that is entirely different from the other frameworks. It’s a piece of the semantic Web. In a layman’s terms, it’s a system that strives to display information in a way that is less demanding for PCs to get it. It replaces the model and view portion of MVC with a solitary concept – the data cube which can be used to develop different components, similar to Docker for the Web.

Phalcon is a micro-framework that is tied in with building cloud APIs. Like other micro-frameworks, it keeps minimal dependencies and maintains a strategic distance from complex features. However, unlike other systems, it wasn’t developed for serving HTML pages. Rather, it’s for building RESTful APIs quickly.

Even though Android has a remarkable SDK out-of-the-box, the implementation of Python instead of Java is a huge advantage for website and app development (using Kivy) since it offers quicker turnaround times and the reuse of Python libraries.

Python is a reliable and secure development language that is used for secure and agile Web app development. It is a standout amongst the available options, being the most dependable. It will reduce the development time spent trying to create a top-notch and robust Web app and site. You can consult with an experienced Python developer for your next project, for better guidance.