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

本文介绍了Python开发中几种流行的Web框架,包括Django(功能强大,一站式解决方案)、Flask(轻量级,灵活扩展)、Pyramid(高效、实用)、Bottle(简单、轻量)、Tornado(非阻塞式,适合实时应用)和Sanic(高性能异步框架)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

image.png

Django

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

image.png

我们可以通过一个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的开发生态也是欣欣向荣,各种组件均可在社区找到对应的实现工具包。

image.png

当我们创建一个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高很多。

image.png

示例代码:

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完美的发挥了“极简主义”风格,好处是显著的,它让我们的项目尽可能的小,但是弊端也是毋庸置疑的,过少的功能支持导致稍微大点的系统就需要自己去开发添加功能。

image.png

示例代码参考:

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框架。

image.png

示例代码:```
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](https://link.juejin.cn/?target=https%3A%2F%2Fwebpy.org%2F "https://webpy.org/")是由`Reddit`联合创始人、`RSS`规格合作创作人、著名黑客`Aaron Swartz`开发。`Web.py`使用基于类的视图,可以轻松创建动态网站和强大的互联网应用程序。它提供 `SQL/JDBC` 作为其数据库接口,包括对 `Google App Engine` 的支持,以及为初学者和专家设计的文档齐全、正确且清晰的界面。

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

![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/07d958b984ef4b27a2ae45731852dcfd~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?)

### Quixote

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

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

### Sanic

[Sanic](https://link.juejin.cn/?target=https%3A%2F%2Fwww.enjoytoday.cn%2F2022%2F10%2F12%2Fpython-sanic-%25e4%25bd%25bf%25e7%2594%25a8%25e5%25bc%2580%25e5%258f%2591%25e6%258c%2587%25e5%258d%2597%2F "https://www.enjoytoday.cn/2022/10/12/python-sanic-%e4%bd%bf%e7%94%a8%e5%bc%80%e5%8f%91%e6%8c%87%e5%8d%97/") 是一个 `Python 3.6+ web` 服务器和web框架,它的编写速度很快,号称 Python 中性能最高的异步 Web 框架。它允许使用`python 3.5`中添加的 `async/await` 语法,这使得您的代码不阻塞,速度更快。`Sanic`参考了`Flask`的设计思想,这使得习惯于使用`Flask`开发的程序员能更快的适应`Sanic`的开发。

![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5a9e8fd312ec4eba8641c9b69a898d3b~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?)

代码示例:

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)


  


<center><B>---------------------------END---------------------------



## 题外话



![在这里插入图片描述](https://img-blog.csdnimg.cn/cb9eaa37ce994535bdf60e07ba4cf09e.jpeg#pic_center)

<font face="幼圆" size="4" color="red">感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
</font>

👉<font color = red>优快云大礼包:gift::</font>[全网最全《Python学习资料》免费赠送:free:!](https://blog.youkuaiyun.com/weixin_68789096/article/details/132275547?spm=1001.2014.3001.5502)<font color=#66cc66>(安全链接,放心点击)</font>



**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

![img](https://img-blog.csdnimg.cn/1d40facda2b84990b8e1743f5487d455.png)
 ![img](https://img-blog.csdnimg.cn/0fc11d4a31bd431dbf124f67f1749046.png)



**二、Python必备开发工具**

工具都帮大家整理好了,安装就可直接上手!![img](https://img-blog.csdnimg.cn/ff266f529c6a46c4bc28e5f895dec647.gif#pic_center)

**三、最新Python学习笔记**

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

 ![img](https://img-blog.csdnimg.cn/6d414e9f494742db8bcc3fa312200539.png)



**四、Python视频合集**

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

![img](https://img-blog.csdnimg.cn/a806d9b941c645858c61d161aec43789.png)

**五、实战案例**

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

![img](https://img-blog.csdnimg.cn/a353983317b14d3c8856824a0d6186c1.png)

 **六、面试宝典**

![在这里插入图片描述](https://img-blog.csdnimg.cn/97c454a3e5b4439b8600b50011cc8fe4.png)

![在这里插入图片描述](https://img-blog.csdnimg.cn/111f5462e7df433b981dc2430bb9ad39.png)

##### **简历模板**![在这里插入图片描述](https://img-blog.csdnimg.cn/646863996ac44da8af500c049bb72fbd.png#pic_center)

👉<font color = red>优快云大礼包:gift::</font>[全网最全《Python学习资料》免费赠送:free:!](https://blog.youkuaiyun.com/weixin_68789096/article/details/132275547?spm=1001.2014.3001.5502)<font color=#66cc66>(安全链接,放心点击)</font>

若有侵权,请联系删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值