网站首页 > 教程文章 正文
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! 消息。
- 上一篇: Python | SQL库:MySQL(python连接mysql数据库环境搭建)
- 下一篇:已经是最后一篇了
猜你喜欢
- 2025-06-15 python mysql 连接池(django mysql连接池)
- 2025-06-15 Python | SQL库:MySQL(python连接mysql数据库环境搭建)
- 2025-06-15 使用Python来实现MySQL与PostgerSQL之间的数据实时同步?
- 最近发表
-
- 第十三章:Python在Web开发中的应用
- python mysql 连接池(django mysql连接池)
- Python | SQL库:MySQL(python连接mysql数据库环境搭建)
- 使用Python来实现MySQL与PostgerSQL之间的数据实时同步?
- 申请免费域名SSL,为NAS和个人网站加密
- Cloudflare配置CDN+SSL+代理(cloudflare国内代理)
- Halo博客搭建(halo博客搭建失败怎么办)
- 我用三年踩坑才摸懂建站这事儿独立站新手别闭眼冲
- 30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务
- 免费通配符ssl证书的申请指南——从申请到启动https
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)