云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

第十三章:Python在Web开发中的应用

jxf315 2025-06-15 17:12:16 教程文章 3 ℃

13.1 Web开发基础概念

13.1.1 理论知识

Web开发主要涉及创建在互联网上可访问的应用程序和网站。关键概念包括:

  • 客户端 - 服务器架构:客户端(如浏览器)向服务器发送请求,服务器处理请求并返回响应。常见的请求方法有 GET(用于获取数据)和 POST(用于提交数据)。
  • HTTP协议:超文本传输协议,用于在客户端和服务器之间传输数据。它规定了请求和响应的格式。
  • URL(统一资源定位符):用于定位互联网上的资源,例如 http://example.com/page。

13.1.2 示例说明

以在浏览器中访问一个网页为例,当输入一个 URL 并回车,浏览器作为客户端向对应的服务器发送一个 GET 请求。服务器接收到请求后,查找并处理相关资源,然后将包含网页内容的响应返回给浏览器,浏览器再将其渲染显示出来。

13.2 Flask Web框架

13.2.1 理论知识

Flask 是一个轻量级的 Python Web 框架,基于 Werkzeug WSGI 工具包和 Jinja2 模板引擎。它提供简单的路由系统,允许开发者轻松定义 URL 与函数之间的映射关系,从而处理不同的 HTTP 请求。

13.2.2 示例代码

from flask import Flask, request, render_template

app = Flask(__name__)


@app.route('/')
def index():
    return "欢迎来到我的Flask应用!"


@app.route('/hello', methods=['GET', 'POST'])
def hello():
    if request.method == 'POST':
        name = request.form.get('name')
        return f"你好,{name}!这是一个 POST 请求。"
    else:
        return "这是一个 GET 请求,你可以通过表单提交名字。"


@app.route('/template')
def template_demo():
    data = {'title': 'Flask模板示例', 'content': '这是通过模板渲染的内容。'}
    return render_template('index.html', **data)


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

13.2.3 代码解释

  • 首先从 flask 库中导入 Flask、request 和 render_template。Flask 类用于创建应用实例,request 用于处理请求,render_template 用于渲染模板。
  • 创建一个 Flask 应用实例 app。
  • 使用 @app.route('/') 装饰器定义根路由,当访问根 URL 时,执行 index 函数,返回欢迎信息。
  • @app.route('/hello', methods=['GET', 'POST']) 定义了 /hello 路由,支持 GET 和 POST 方法。如果是 POST 方法,从表单中获取 name 字段并返回个性化问候;如果是 GET 方法,返回提示信息。
  • @app.route('/template') 定义了 /template 路由,创建一个包含标题和内容的字典 data,使用 render_template 渲染名为 index.html 的模板,并将 data 传递给模板。
  • if __name__ == '__main__': 确保在直接运行脚本时,启动 Flask 应用,并开启调试模式。

13.3 Django Web框架

13.3.1 理论知识

Django 是一个功能强大、高度集成的 Python Web 框架,遵循 MTV(Model - Template - View)架构模式。它具有内置的数据库管理、用户认证、表单处理等功能,适合开发大型、复杂的 Web 应用。

13.3.2 示例代码

首先,使用 django - admin startproject myproject 命令创建一个新的 Django 项目。然后在
myproject/myproject/urls.py 中添加以下代码:

from django.contrib import admin
from django.urls import path
from myapp.views import home

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home, name='home')
]

在 myproject/myapp/views.py 中添加以下代码:

from django.shortcuts import render


def home(request):
    return render(request, 'home.html')


myproject/myapp/templates/home.html 中创建一个简单的 HTML 模板:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF - 8">
    <title>我的Django首页</title>
</head>
<body>
    <h1>欢迎来到我的Django应用</h1>
</body>
</html>

13.3.3 代码解释

  • 在 urls.py 中,定义了两个 URL 模式。path('admin/', admin.site.urls) 用于管理后台,path('', home, name='home') 将根 URL 映射到 home 视图函数。
  • 在 views.py 中,home 函数使用 render 函数渲染 home.html 模板,并将请求对象传递给模板。
  • home.html 是一个简单的 HTML 模板,显示欢迎信息。

13.4 与数据库交互

13.4.1 理论知识

在 Web 开发中,与数据库交互至关重要。Python 提供了多种库来连接和操作不同类型的数据库,如 sqlite3 用于 SQLite 数据库,psycopg2 用于 PostgreSQL 数据库,mysql - connector - python 用于 MySQL 数据库等。

13.4.2 示例代码(以 SQLite 为例)

import sqlite3

# 连接到数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users
                  (id INTEGER PRIMARY KEY AUTOINCREMENT,
                   name TEXT NOT NULL,
                   email TEXT UNIQUE)''')

# 插入数据
data = [('Alice', 'alice@example.com'), ('Bob', 'bob@example.com')]
cursor.executemany('INSERT INTO users (name, email) VALUES (?,?)', data)
conn.commit()

# 查询数据
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)

# 关闭连接
conn.close()

13.4.3 代码解释

  • 使用 sqlite3.connect('example.db') 连接到 SQLite 数据库,如果数据库文件不存在则创建。
  • cursor.execute 执行 SQL 语句创建 users 表,包含 id(自增主键)、name(不能为空)和 email(唯一)字段。
  • cursor.executemany 批量插入数据到 users 表,conn.commit() 提交事务。
  • 执行查询语句 SELECT * FROM users,并使用 fetchall 获取所有查询结果,遍历并打印。
  • 最后关闭数据库连接。

13.5 RESTful API开发

13.5.1 理论知识

RESTful API(表述性状态转移应用程序编程接口)是一种设计 Web API 的架构风格。它基于 HTTP 协议,使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE)来操作资源,具有轻量级、可扩展性强等优点,广泛应用于前后端分离架构和微服务架构中。

13.5.2 示例代码(使用 Flask - Restful)

首先安装 flask - restful:pip install flask - restful。

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)


class HelloWorld(Resource):
    def get(self):
        return {'message': 'Hello, World!'}


api.add_resource(HelloWorld, '/')


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

13.5.3 代码解释

  • 导入必要的库,创建 Flask 应用实例 app 和 Flask - Restful 的 Api 实例 api。
  • 定义一个资源类 HelloWorld,继承自 Resource,并实现 get 方法,返回包含消息的 JSON 数据。
  • 使用 api.add_resource(HelloWorld, '/') 将 HelloWorld 资源添加到根 URL,当客户端发送 GET 请求到根 URL 时,会返回 Hello, World! 消息。
最近发表
标签列表