1.1 HTTP协议基础
HTTP(超文本传输协议)是Web通信的基础协议,定义了客户端和服务器之间交换信息的方式。
关键概念:
- 请求方法:GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)
- 状态码:200(成功)、404(未找到)、500(服务器错误)、302(重定向)
- 头部信息:包含元数据如Content-Type、Cookie等
1.2 请求/响应周期
Web交互遵循标准流程:
- 客户端发送HTTP请求:浏览器或应用发起请求
- 服务器解析请求:Web服务器解析请求内容
- 应用处理业务逻辑:框架处理路由、数据库操作等
- 生成HTTP响应:构建响应头和内容
- 返回给客户端:服务器发送响应,客户端渲染结果
要点:
2.1 WSGI接口
WSGI(Web Server Gateway Interface)是Python Web应用与服务器之间的标准接口。
基础实现:
def simple_app(environ, start_response):
    """最简单的WSGI应用"""
    status = '200 OK'
    headers = [('Content-type', 'text/plain')]
    start_response(status, headers)
    return [b"Hello World!"]
# 使用wsgiref运行
from wsgiref.simple_server import make_server
httpd = make_server('', 8000, simple_app)
httpd.serve_forever()
关键参数:
- environ:包含请求信息的字典
- start_response:设置响应状态和头部的函数
2.2 WSGI中间件
中间件是WSGI应用的包装器,用于处理请求/响应的预处理和后处理。
class Middleware:
    """WSGI中间件示例"""
    def__init__(self, app):
        self.app = app
    
    def__call__(self, environ, start_response):
        # 预处理 - 日志记录
        print(f"请求路径: {environ['PATH_INFO']}")
        
        # 调用下层应用
        defcustom_start_response(status, headers):
            # 后处理 - 添加自定义头部
            headers.append(('X-Middleware', 'Processed'))
            return start_response(status, headers)
        
        returnself.app(environ, custom_start_response)
# 包装应用
wrapped_app = Middleware(simple_app)
中间件常见用途:
3.1 Flask框架
轻量级微框架,适合中小型项目和API开发。
基本应用:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/')
defhome():
    return"<h1>欢迎使用Flask</h1>"
@app.route('/api/data', methods=['GET', 'POST'])
defhandle_data():
    if request.method == 'POST':
        return jsonify({"status": "成功", "data": request.json})
    return jsonify({"values": [1, 2, 3]})
if __name__ == '__main__':
    app.run(debug=True)
Flask特点:
3.2 Django框架
全功能框架,遵循"不重复自己"(DRY)原则,适合大型项目。
MTV架构:
快速开始:
# views.py
from django.http import HttpResponse
from django.shortcuts import render
defindex(request):
    return HttpResponse("Hello Django")
defuser_view(request, username):
    return render(request, 'user.html', {'name': username})
# urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index),
    path('user/<str:username>/', views.user_view)
]
Django特点:
3.3 FastAPI框架
现代异步框架,适合高性能API和实时应用。
基本示例:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
classItem(BaseModel):
    name: str
    price: float
@app.get("/")
asyncdefroot():
    return {"message": "Hello FastAPI"}
@app.post("/items/")
asyncdefcreate_item(item: Item):
    return {"item": item.dict()}
WebSocket支持:
from fastapi import WebSocket
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"收到: {data}")
FastAPI优势:
- 高性能(基于Starlette和Pydantic)
4.1 Jinja2语法
Jinja2是Python流行的模板引擎,用于动态生成HTML。
基础语法:
<!-- base.html -->
<html>
<head><title>{% block title %}{% endblock %}</title></head>
<body>
  {% block content %}{% endblock %}
</body>
</html>
<!-- user.html -->
{% extends "base.html" %}
{% block title %}用户 {{ name }}{% endblock %}
{% block content %}
<h1>欢迎, {{ name }}!</h1>
  {% if is_admin %}
    <p>您拥有管理员权限</p>
  {% endif %}
<ul>
    {% for item in items %}
      <li>{{ item.name }}: ${{ item.price }}</li>
    {% endfor %}
</ul>
{% endblock %}
4.2 模板继承与渲染
from jinja2 import Environment, FileSystemLoader
# 创建模板环境
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('user.html')
# 渲染模板
context = {
    'name': '张三',
    'is_admin': True,
    'items': [
        {'name': '笔记本', 'price': 5999},
        {'name': '鼠标', 'price': 199}
    ]
}
output = template.render(context)
print(output)
模板实践:
Web开发核心要点:
进阶学习方向:
掌握Python Web开发技能,我们将能够构建从简单博客到复杂企业级应用的各类系统。不断实践并参与真实项目是提升技能的最佳途径!
阅读原文:原文链接
该文章在 2025/7/18 10:54:28 编辑过