Python开发中Web框架如何选择web框架?django项目 |
您所在的位置:网站首页 › flask异步非阻塞 › Python开发中Web框架如何选择web框架?django项目 |
Python开发中Web框架如何选择web框架?django项目
![]() Python开发中的Web框架可谓是百花齐放,各种Web框架层出不穷,所以对于需要进行Python开发的我们来说,如何选择Web框架就成了一门学问。 本文主要介绍目前流行的一些具有特点的Web框架。 我们可以根据各个web框架的特点来选择和应用。 姜戈 Django是目前市面上比较庞大和完整的一系列web开发框架。 Django官网上的介绍是:Django makes it easier to build better web applications faster with less code。 它提供一站式的网络应用框架解决方案。 例如实现了缓存、ORM、权限验证、管理后台、插件扩展等多项功能。 到现在为止,我更倾向于认为Django是一个强大的Python CMS系统。 我们可以通过一个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 是一个轻量级的 Web 应用程序框架。 它不包含任何模块,但支持扩展所有必需的内容。 秉承用多少用多少的理念,是不可多得的Python Web框架。 而且Flask的开发生态也很繁荣,各种组件都可以在社区找到对应的实现工具包。 在我们创建了一个 Flask 框架应用之后,我们可以通过以下代码启动一个简单的 flask 程序: from flask import Flask # 导入Flask类 app = Flask(__name__) # 实例化Flask类 @app.route('/func') # 编写视图函数及配置路由 def func(): return '这是Flask框架' if __name__ == '__main__': # 启动服务 app.run()金字塔 Pyramid 是一个小巧、快速且有用的开源 Python Web 框架。 它使现实世界的 Web 应用程序开发和部署更加有趣、可预测和高效。 它是 Pylons 项目的一部分。 采用的许可协议是类 BSD 许可。 金字塔在中国并不知名。 其框架代码与flask类似,但性能却远高于Flask。 示例代码: 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 是一个用于 Python 的快速、简单和轻量级的 WSGI 微型 Web 框架。 其特点是单一文件,代码只使用Python标准库web游戏开发框架,不额外依赖其他第三方库。 可以说,Bottle 将“极简主义”风格发挥得淋漓尽致。 好处是显着的。 它让我们的项目尽可能的小,但是缺点也是毋庸置疑的。 功能支持太少导致系统稍大,需要自己 Go 开发和添加功能。 示例代码参考: 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 最初是由 FriendFeed 开发的非阻塞 Web 服务器。 因为是非阻塞服务器,所以访问加载速度比较快3D素材,Tornado可以支持每秒数千个连接。 对于长轮询和 WebSocket 等实时 Web 服务,Tornado 是一个理想的 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())网络.py Web.py 由 Aaron Swartz 开发web游戏开发框架,他是 Reddit 的联合创始人、RSS 规范的共同创建者和著名黑客。 Web.py 使用基于类的视图,可以轻松创建动态网站和强大的 Internet 应用程序。 它提供 SQL/JDBC 作为其数据库接口3D植物,包括对 Google App Engine 的支持,以及为初学者和专家设计的文档齐全、正确且清晰的接口。 web2py 被定义为一个免费的开源 Web 框架,用于涉及数据库驱动的 Web 应用程序的敏捷开发。 它是用 Python 编写和编程的。 它是一个完整的堆栈框架,由开发人员创建功能齐全的 Web 应用程序所需的所有必要组件组成。 堂吉诃德 Quixote 是一个用 Python 编写基于 Web 的应用程序的框架。 它的目标依次是灵活性和高性能。 Quixote 应用程序的结构往往类似于传统应用程序。 格式化网页的逻辑由 Python 类和函数组成。 Quixote 不强制分离表示逻辑和“后端”逻辑。 相反,我们鼓励您使用传统技术。 例如,一种解决方案是将表示逻辑放在它自己的子包中。 Quixote采用目录式的URL分发规则,使用python编写模板。 PTL模板比较适合程序员,但不适合美工参与前端代码的编写和修改,而且堂吉诃德更新频率低,社区不够活跃,所以不推荐生产环境推荐使用Quixote作为web开发框架。 萨尼奇 Sanic 是一个 Python 3.6+ 网络服务器和网络框架。 它编写速度非常快,号称是 Python 中性能最高的异步 Web 框架。 它允许使用 python 3.5 中添加的 async/await 语法,这使您的代码非阻塞且更快。 Sanic参考了Flask的设计思想,让习惯使用Flask的程序员更快的适应Sanic的开发。 代码示例: 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) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |