Python中如何选择Web开发框架?

Python开发中 Web框架可谓是百花齐放,各式各样的 web框架层出不穷,那么对于需要进行 Python开发的我们来说,如何选择 web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的 Web框架,我们可以根据各个 Web框架的特性进行选择应用。

Python中如何选择Web开发框架?

Django

Django是市面上比较大而全的一个系列 Web开发框架。 Django官网上的介绍是: Django 可以更轻松地以更少的代码更快地构建更好的 Web 应用程序。它提供了一站式的 web应用框架解决方案。如实现了缓存、 ORM、权限验证、管理后台、插件扩展等多项功能。发展到现在,我更愿意认为 Django是一个功能强大的 Python CMS系统。

Python中如何选择Web开发框架?

我们可以通过一个 django项目来简单了解下 Django项目:

$ pip install django
$ django-admin startproject djdemo
 cd djdemo
$ django-admin startapp djapp
$ tree -L 3
.
├── djapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── djdemo
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   └── settings.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py
复制代码

Flask

Flask是一个轻量级的 Web应用框架,它本身不包含任何模块,却又支持扩展所有需要的内容,秉承着需要多少用多少的理念,是一个不可多得的 Python Web框架。而且Flask的开发生态也是欣欣向荣,各种组件均可在社区找到对应的实现工具包。

Python中如何选择Web开发框架?

当我们创建一个 Flask框架应用后,我们可以通过下面的代码来启动一个简单的flask程序:

from flask import Flask        # 导入Flask类

app = Flask(__name__)          # 实例化Flask类

@app.route('/func')            # 编写视图函数及配置路由
def func():
    return '这是Flask框架'

if __name__ == '__main__':     # 启动服务
    app.run()
复制代码

Pyramid

Pyramid 是一个小巧、快速、实用的开源  Python Web 框架。它使现实世界的 Web 应用程序开发和部署更有趣、更可预测且更高效。它是 Pylons Project 的一部分。采用的授权协议是  BSD-like licensePyramid在国内的知名度并不高,其框架代码量和flask差不多,但是性能却比Flask高很多。

Python中如何选择Web开发框架?

示例代码:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

def hello_world(request):
    return Response('Hello World!')

if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('hello', '/')
        config.add_view(hello_world, route_name='hello')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 6543, app)
    server.serve_forever()
复制代码

Bottle

Bottle是一个用于 Python 的快速、简单和轻量级的 WSGI 微型网络框架。它的特点是单文件,代码只使用了 Python标准库,而不需要额外依赖其他第三方库。可以说 Bottle完美的发挥了”极简主义”风格,好处是显著的,它让我们的项目尽可能的小,但是弊端也是毋庸置疑的,过少的功能支持导致稍微大点的系统就需要自己去开发添加功能。

Python中如何选择Web开发框架?

示例代码参考:

from bottle import route, request, run

@route('/hello', method=['GET', 'POST'])
def dh():
  return 'hello ' + request.query.str

if __name__ == "__main__":
  run(host='0.0.0.0', port=8080)
复制代码

Tornado

Tornado最初是由 FriendFeed开发的非阻塞式 Web服务器。由于是非阻塞式服务器,所以它的访问加载速度比较快, Tornado可以支持每秒数千计的连接。对于长轮询、 WebSocket等实时性 web服务来说, Tornado是一个理想的 Web框架。

Python中如何选择Web开发框架?

示例代码:

import asyncio

import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

async def main():
    app = make_app()
    app.listen(8888)
    await asyncio.Event().wait()

if __name__ == "__main__":
    asyncio.run(main())
复制代码

Web.py

Web.py是由 Reddit联合创始人、 RSS规格合作创作人、著名黑客 Aaron Swartz开发。 Web.py使用基于类的视图,可以轻松创建动态网站和强大的互联网应用程序。它提供 SQL/JDBC 作为其数据库接口,包括对 Google App Engine 的支持,以及为初学者和专家设计的文档齐全、正确且清晰的界面。

web2py被定义为一个用于敏捷开发的免费开源 Web框架,涉及数据库驱动的 Web应用程序。它是用 Python编写和编程的。它是一个完整的堆栈框架,由开发人员创建功能齐全的 Web应用程序所需的所有必要组件组成。

Python中如何选择Web开发框架?

Quixote

Quixote 是一个使用 Python 编写基于 Web 的应用程序的框架。它的目标是按此顺序实现灵活性和高性能。 Quixote 应用程序的结构往往类似于传统应用程序。格式化网页的逻辑由 Python 类和函数组成。 Quixote 不强制分离表示逻辑和 “后端” 逻辑。相反,我们鼓励您使用传统技术。例如,一种解决方案是将表示逻辑放在其自己的子包中。

Quixote使用的是目录式的 URL分发规则,使用 python来编写模板。 PTL模板更适合程序员,但并不适合美工参与前端代码的编写和修改,且 Quixote的更新频率较低、社区活跃度不够,所以并不建议在生产环境选用 Quixote作为 web开发框架。

Sanic

Sanic是一个  Python 3.6+ web 服务器和web框架,它的编写速度很快,号称 Python 中性能最高的异步 Web 框架。它允许使用 python 3.5中添加的 async/await 语法,这使得您的代码不阻塞,速度更快。 Sanic参考了 Flask的设计思想,这使得习惯于使用 Flask开发的程序员能更快的适应 Sanic的开发。

Python中如何选择Web开发框架?

代码示例:

from sanic import Sanic
from sanic.response import json

app = Sanic("hello_example")

@app.route("/")
async def test(request):
  return json({"hello": "world"})

if __name__ == "__main__":
  app.run(host="0.0.0.0", port=8000)

Original: https://blog.csdn.net/weixin_73136678/article/details/128429835
Author: 恶霸程序员388
Title: Python中如何选择Web开发框架?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/778677/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球