Python中如何选择Web开发框架?
Python
开发中Web
框架可谓是百花齐放,各式各样的web
框架层出不穷,那么对于需要进行Python
开发的我们来说,如何选择web
框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web
框架,我们可以根据各个Web
框架的特性进行选择应用。
Django
Django
是市面上比较大而全的一个系列Web
开发框架。Django
官网上的介绍是:Django
可以更轻松地以更少的代码更快地构建更好的 Web
应用程序。它提供了一站式的web
应用框架解决方案。如实现了缓存、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
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
Pyramid
是一个小巧、快速、实用的开源 Python Web
框架。它使现实世界的 Web
应用程序开发和部署更有趣、更可预测且更高效。它是 Pylons Project
的一部分。采用的授权协议是 BSD-like license
。Pyramid
在国内的知名度并不高,其框架代码量和flask差不多,但是性能却比Flask高很多。
示例代码:
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Responsedef 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
完美的发挥了“极简主义”风格,好处是显著的,它让我们的项目尽可能的小,但是弊端也是毋庸置疑的,过少的功能支持导致稍微大点的系统就需要自己去开发添加功能。
示例代码参考:
from bottle import route, request, run@route('/hello', method=['GET', 'POST'])
def dh(): return 'hello ' + request.query.strif __name__ == "__main__":run(host='0.0.0.0', port=8080)
复制代码
Tornado
Tornado最初是由FriendFeed
开发的非阻塞式Web
服务器。由于是非阻塞式服务器,所以它的访问加载速度比较快,Tornado
可以支持每秒数千计的连接。对于长轮询、WebSocket
等实时性web
服务来说,Tornado
是一个理想的Web
框架。
示例代码:
import asyncioimport tornado.webclass 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
应用程序所需的所有必要组件组成。
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
的开发。
代码示例:
from sanic import Sanic
from sanic.response import jsonapp = 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)
Python中如何选择Web开发框架?相关推荐
- 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI
Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...
- 零基础Python完全自学教程11:Python中的选择语句
欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础Python完全自学教程>今天给大家分享的是第11课<Python中的选择语句>.本节课主要内容有:最简单的if语句.if ...
- python中的选择结构语句是语句_python3控制语句---选择结构语句
python中的控制语句主要有if.if--else.if--slif--else.pass语句.其实python的控制语句与其他语言的控制语句工作原理基本一样.控制语句可以分为选择结构语句和循环结构 ...
- python 自动化 在日历中选择时间-Python中Selenium选择日期(选择日历控件)的方法...
1.日历控件中,年月日,一个一个的点击,灵活性太差,稳定性也差 通过检查元素,日历空间就是一个文本输入框,可以用send_keys 检查元素 2.发现标签中存在readonly属性,这是一个只读标签不 ...
- python中的选择最高的成绩_python 输入学生成绩 若成绩在90、流程图_Python习题选编...
<Python习题选编>由会员分享,可在线阅读,更多相关<Python习题选编(20页珍藏版)>请在人人文库网上搜索. 1.Python习题选编华东师大信息学院计算中心一程序结 ...
- python中的选择结构语句是语句_选择结构-if语句和if...else语句
作为控制结构的核心,选择结构在我们生活中无处不在.通过几个例子来了解一下选择结构: 1) 使用手机的时候,如果手机没电,就无法使用,有电可以正常使用. 2) 在登录QQ输入账户密码之后,如果密码正确则 ...
- python条件选择语句,Python中条件选择语句可以嵌套使用。
[多选题]PCR反应平台期的影响因素有 [多选题]管理控制包括的基本步骤是( ) [填空题]我是填空题,____,____. [判断题]一分钟的自我介绍要简洁,突出重点,清晰表达自己的基本信息,包括姓 ...
- pythonweb开发-5个最好的Python Web开发框架
原标题:5个最好的Python Web开发框架 Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开 ...
- python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现
Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...
最新文章
- linux shell中的命令自动补全(compgen complete)与 命令行参数解析
- react-dnd 拖拽
- ORACLE TEXT FILTER PREFERENCE(一)
- python字典进行大写转化_python之字典的增删改查
- 人民的名义中,为什么蔡成功的贷款这么难?
- 贝叶斯统计 传统统计_统计贝叶斯如何补充常客
- html 输入框 相加,JS中,如何实现两个输入框中内容的数字相加?
- 从保证业务不中断,看网关的“前世今生”
- Oracle提升查询性能之-简单范围分区表的创建
- Spring Security系列之基本原理
- maxscale mysql_安装maxscale MySql读写分离
- 如何在java中实现小数点自增_java保留小数的四种实现方法
- [ubuntu]Ubuntu查看cpu温度
- visual studio code Python终端运行_深入比较kaldi和python_speech_features提取的fbank特征之间的区别...
- JUC- 常用的辅助类
- php做网络心理测试,php心理测试程序源代码版,求高手帮忙写一个c语言的心理测试程序...
- 在线模拟装机大学计算机,模拟装机实验.doc
- go install报错no install location for directory outside GOPATH
- 学习,积累,10000小时定律
- 安装heg时找不到java,记录安装HEG的坑
热门文章
- 编译原理3 - 词法分析
- 使用sqlserver management studio创建新用户
- 骁龙855超旗舰2698元起?联想手机收官2018
- 物工一班第一次作业17038016刘瑞
- db2locate函数_DB2中使用locate
- mysql delete 语法_MySQL DELETE 语句
- Python使用turtle绘制简单图形-设置绝对坐标setpos(), 抬起画笔penup(),放下画笔pendown()
- 启用tcp_wrappers防火墙
- 软件测试之决策表(逻辑最严谨的功能性测试)
- 双击程序没反应的解决办法之一