使用 Python 进行 Web 开发的 15 个框架指南

开发 后端
本文介绍了多个Python Web框架,包括轻量级的Flask、全能型的Django、现代的FastAPI、异步的Tornado、灵活的Pyramid以及更多其他框架。

在Python Web开发领域,有许多不同类型的框架可供选择,从轻量级到全功能型,再到专注于异步处理的框架。本文将介绍多个Python Web框架,帮助开发者根据具体需求选择合适的工具。

1. Flask:轻量级Web框架

Flask是一个用Python编写的轻量级Web应用框架。它简单易学,适合快速开发小到中型项目。

安装:

pip install flask

示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

解释:

  • from flask import Flask:导入Flask类。
  • app = Flask(__name__):创建Flask实例。
  • @app.route('/'):定义路由。
  • hello_world():视图函数。
  • app.run(debug=True):启动开发服务器。

2. Django:全能型Web框架

Django是全功能的Web框架,适用于开发大型项目。它提供了ORM、用户认证等内置功能。

安装:

pip install django

示例:

# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

# views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

解释:

  • INSTALLED_APPS:定义安装的应用。
  • urlpatterns:定义URL模式。
  • index:视图函数。

3. FastAPI:现代Web框架

FastAPI是一个现代、快速(高性能)的Web框架,基于Python 3.6+类型提示。它用于构建API,支持异步操作。

安装:

pip install fastapi
pip install uvicorn

示例:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

解释:

  • from fastapi import FastAPI:导入FastAPI类。
  • app = FastAPI():创建FastAPI实例。
  • @app.get("/"):定义GET路由。
  • read_root:异步视图函数。

4. Tornado:异步Web框架

Tornado是一个开源的Python Web框架,专为异步处理而设计,适用于大规模并发请求。

安装:

pip install tornado

示例:

import tornado.ioloop
import tornado.web

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

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

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

解释:

  • import tornado.ioloop:导入IOLoop模块。
  • MainHandler:请求处理器。
  • make_app:创建应用实例。

5. Pyramid:灵活的Web框架

Pyramid是一个灵活且可扩展的Web框架,适合开发任何规模的Web应用程序。

安装:

pip install pyramid

示例:

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

def hello_world(request):
    return {'message': 'Hello, world!'}

if __name__ == '__main__':
    config = Configurator()
    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()

解释:

  • from wsgiref.simple_server import make_server:导入WSGI服务器。
  • Configurator:配置器类。
  • add_route:添加路由。
  • add_view:添加视图。

6. Sanic:高性能Web框架

Sanic是一个轻量级的Python Web框架,专为高性能而设计,适用于构建RESTful API。

安装:

pip install sanic

示例:

from sanic import Sanic
from sanic.response import json

app = Sanic("My Hello, world app")

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

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

解释:

  • from sanic import Sanic:导入Sanic类。
  • app = Sanic("My Hello, world app"):创建Sanic实例。
  • @app.route("/"):定义路由。
  • test:异步视图函数。
  • app.run(host="0.0.0.0", port=8000, debug=True):启动服务器。

7. Bottle:轻量级Web框架

Bottle是一个轻量级的Web框架,适用于小型项目或简单的Web应用程序。

安装:

pip install bottle

示例:

from bottle import route, run

@route('/')
def hello_world():
    return 'Hello, World!'

run(host='localhost', port=8080, debug=True)

解释:

  • from bottle import route, run:导入route和run函数。
  • @route('/'):定义路由。
  • hello_world:视图函数。
  • run(host='localhost', port=8080, debug=True):启动服务器。

8. Starlette:高性能Web框架

Starlette是一个高性能的Web框架,适用于构建现代Web应用程序,特别是API。

安装:

pip install starlette

示例:

from starlette.applications import Starlette
from starlette.responses import JSONResponse, PlainTextResponse
from starlette.routing import Route

async def homepage(request):
    return JSONResponse({'hello': 'world'})

app = Starlette(routes=[
    Route('/', homepage),
])

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

解释:

  • from starlette.applications import Starlette:导入Starlette类。
  • from starlette.responses import JSONResponse:导入JSONResponse类。
  • homepage:异步视图函数。
  • app = Starlette(routes=[Route('/', homepage)]):创建Starlette实例并定义路由。
  • uvicorn.run(app, host="127.0.0.1", port=8000):启动服务器。

9. aiohttp:异步Web框架

aiohttp是一个异步Web框架,适用于构建高性能Web应用程序和API。

安装:

pip install aiohttp

示例:

from aiohttp import web

async def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(text=text)

app = web.Application()
app.add_routes([web.get('/', handle),
                web.get('/{name}', handle)])

web.run_app(app)

解释:

  • from aiohttp import web:导入web模块。
  • handle:异步视图函数。
  • app = web.Application():创建aiohttp实例。
  • app.add_routes([web.get('/', handle), web.get('/{name}', handle)]):定义路由。
  • web.run_app(app):启动服务器。

10. Cherrypy:成熟Web框架

Cherrypy是一个成熟的Web框架,适用于构建各种规模的Web应用程序。

安装:

pip install cherrypy

示例:

import cherrypy

class HelloWorld(object):
    @cherrypy.expose
    def index(self):
        return "Hello, world!"

if __name__ == '__main__':
    cherrypy.quickstart(HelloWorld())

解释:

  • import cherrypy:导入cherrypy模块。
  • class HelloWorld(object):定义类。
  • @cherrypy.expose:暴露方法。
  • index:视图函数。
  • cherrypy.quickstart(HelloWorld()):启动服务器。

11. Falcon:轻量级Web框架

Falcon是一个轻量级的Web框架,适用于构建高性能API。

安装:

pip install falcon

示例:

import falcon

class ThingsResource:
    def on_get(self, req, resp):
        """Handles GET requests"""
        resp.status = falcon.HTTP_200
        resp.body = ('This is an example web service')

app = falcon.App()
app.add_route('/things', ThingsResource())

if __name__ == '__main__':
    from wsgiref import simple_server
    httpd = simple_server.make_server('127.0.0.1', 8000, app)
    httpd.serve_forever()

解释:

  • import falcon:导入falcon模块。
  • class ThingsResource:定义类。
  • on_get:处理GET请求。
  • app = falcon.App():创建falcon实例。
  • app.add_route('/things', ThingsResource()):定义路由。
  • httpd.serve_forever():启动服务器。

12. Hug:简洁的Web框架

Hug是一个简洁的Web框架,适用于构建API,特别强调简洁性和性能。

安装:

pip install hug

示例:

import hug

@hug.get('/')
def hello_world():
    return {'hello': 'world'}

if __name__ == '__main__':
    hug.API(__name__).http.serve(port=8000)

解释:

  • import hug:导入hug模块。
  • @hug.get('/'):定义GET路由。
  • hello_world:视图函数。
  • hug.API(__name__).http.serve(port=8000):启动服务器。

13. Quart:异步Web框架

Quart是一个异步Web框架,适用于构建异步Web应用程序和API。

安装:

pip install quart

示例:

from quart import Quart, jsonify

app = Quart(__name__)

@app.route('/')
async def hello_world():
    return jsonify({'hello': 'world'})

if __name__ == '__main__':
    app.run(debug=True)

解释:

  • from quart import Quart:导入Quart类。
  • app = Quart(__name__):创建Quart实例。
  • @app.route('/'):定义路由。
  • hello_world:异步视图函数。
  • app.run(debug=True):启动服务器。

14. Web2py:全功能Web框架

Web2py是一个全功能的Web框架,适用于开发各种规模的Web应用程序。

安装:

pip install web2py

示例:

def index():
    return dict(message="Hello, world!")

if __name__ == '__main__':
    from gluon.main import run
    run()

解释:

  • def index():视图函数。
  • return dict(message="Hello, world!"):返回字典。
  • from gluon.main import run:导入run函数。
  • run():启动服务器。

15. Morepath:可扩展Web框架

Morepath是一个可扩展的Web框架,适用于开发可扩展性强的Web应用程序。

安装:

pip install morepath

示例:

import morepath

class App(morepath.App):
    pass

@App.path(path="")
def get_root():
    return Root()

@App.view(model=Root)
def root_default(self, request):
    return "Hello, world!"

class Root:
    pass

if __name__ == '__main__':
    morepath.scan(App)
    App().run()

解释:

  • import morepath:导入morepath模块。
  • class App(morepath.App):定义类。
  • @App.path(path=""):定义路径。
  • get_root:获取根对象。
  • @App.view(model=Root):定义视图。
  • root_default:视图函数。
  • morepath.scan(App):扫描App类。
  • App().run():启动服务器。

总结

本文介绍了多个Python Web框架,包括轻量级的Flask、全能型的Django、现代的FastAPI、异步的Tornado、灵活的Pyramid以及更多其他框架。这些框架各有特点,可以根据项目的具体需求来选择最适合的框架进行开发。

责任编辑:赵宁宁 来源: 手把手PythonAI编程
相关推荐

2010-11-17 12:59:52

2022-04-07 15:41:36

PythonWeb 开发框

2022-10-27 20:37:53

开发web框架

2024-01-15 17:26:26

JavaScriptWeb开发

2022-04-13 18:40:59

Python开发

2012-05-09 10:42:43

2012-05-10 10:01:31

2021-12-06 09:00:00

开发WebDjango

2015-07-13 10:41:30

Web开发 Python 框架

2015-08-25 09:53:22

Web开发Python框架

2018-10-25 23:00:12

Python 开发编程语言

2022-07-03 17:10:15

JavaScript编程语言开发

2011-02-28 09:00:41

WebHTML 5

2017-05-23 14:20:17

WebPython框架

2015-03-11 09:55:08

Web开发初学指南Web开发指南

2022-03-28 14:08:02

Python数据清洗数据集

2021-07-28 14:14:09

JavaScript开源框架

2011-05-19 17:00:56

Web框架

2011-02-18 14:34:49

Web 设计 开发 C

2013-06-13 10:15:20

WebWeb工具Web开发人员
点赞
收藏

51CTO技术栈公众号