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 licensePyramid在国内的知名度并不高,其框架代码量和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开发框架?相关推荐

  1. 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI

    Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...

  2. 零基础Python完全自学教程11:Python中的选择语句

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础Python完全自学教程>今天给大家分享的是第11课<Python中的选择语句>.本节课主要内容有:最简单的if语句.if ...

  3. python中的选择结构语句是语句_python3控制语句---选择结构语句

    python中的控制语句主要有if.if--else.if--slif--else.pass语句.其实python的控制语句与其他语言的控制语句工作原理基本一样.控制语句可以分为选择结构语句和循环结构 ...

  4. python 自动化 在日历中选择时间-Python中Selenium选择日期(选择日历控件)的方法...

    1.日历控件中,年月日,一个一个的点击,灵活性太差,稳定性也差 通过检查元素,日历空间就是一个文本输入框,可以用send_keys 检查元素 2.发现标签中存在readonly属性,这是一个只读标签不 ...

  5. python中的选择最高的成绩_python 输入学生成绩 若成绩在90、流程图_Python习题选编...

    <Python习题选编>由会员分享,可在线阅读,更多相关<Python习题选编(20页珍藏版)>请在人人文库网上搜索. 1.Python习题选编华东师大信息学院计算中心一程序结 ...

  6. python中的选择结构语句是语句_选择结构-if语句和if...else语句

    作为控制结构的核心,选择结构在我们生活中无处不在.通过几个例子来了解一下选择结构: 1) 使用手机的时候,如果手机没电,就无法使用,有电可以正常使用. 2) 在登录QQ输入账户密码之后,如果密码正确则 ...

  7. python条件选择语句,Python中条件选择语句可以嵌套使用。

    [多选题]PCR反应平台期的影响因素有 [多选题]管理控制包括的基本步骤是( ) [填空题]我是填空题,____,____. [判断题]一分钟的自我介绍要简洁,突出重点,清晰表达自己的基本信息,包括姓 ...

  8. pythonweb开发-5个最好的Python Web开发框架

    原标题:5个最好的Python Web开发框架 Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开 ...

  9. python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现

    Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...

最新文章

  1. linux shell中的命令自动补全(compgen complete)与 命令行参数解析
  2. react-dnd 拖拽
  3. ORACLE TEXT FILTER PREFERENCE(一)
  4. python字典进行大写转化_python之字典的增删改查
  5. 人民的名义中,为什么蔡成功的贷款这么难?
  6. 贝叶斯统计 传统统计_统计贝叶斯如何补充常客
  7. html 输入框 相加,JS中,如何实现两个输入框中内容的数字相加?
  8. 从保证业务不中断,看网关的“前世今生”
  9. Oracle提升查询性能之-简单范围分区表的创建
  10. Spring Security系列之基本原理
  11. maxscale mysql_安装maxscale MySql读写分离
  12. 如何在java中实现小数点自增_java保留小数的四种实现方法
  13. [ubuntu]Ubuntu查看cpu温度
  14. visual studio code Python终端运行_深入比较kaldi和python_speech_features提取的fbank特征之间的区别...
  15. JUC- 常用的辅助类
  16. php做网络心理测试,php心理测试程序源代码版,求高手帮忙写一个c语言的心理测试程序...
  17. 在线模拟装机大学计算机,模拟装机实验.doc
  18. go install报错no install location for directory outside GOPATH
  19. 学习,积累,10000小时定律
  20. 安装heg时找不到java,记录安装HEG的坑

热门文章

  1. 编译原理3 - 词法分析
  2. 使用sqlserver management studio创建新用户
  3. 骁龙855超旗舰2698元起?联想手机收官2018
  4. 物工一班第一次作业17038016刘瑞
  5. db2locate函数_DB2中使用locate
  6. mysql delete 语法_MySQL DELETE 语句
  7. Python使用turtle绘制简单图形-设置绝对坐标setpos(), 抬起画笔penup(),放下画笔pendown()
  8. 启用tcp_wrappers防火墙
  9. 软件测试之决策表(逻辑最严谨的功能性测试)
  10. 双击程序没反应的解决办法之一