python开发小程序教程
-
2026-10-20
昆明
- 返回列表
```python
import sqlite3
from flask import g
DATABASE = 'todos.db'
def get_db:
获取数据库连接
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
db.row_factory = sqlite3.Row 使返回的行像字典一样可访问
return db
@app.teardown_appcontext
def close_connection(exception):
请求结束后关闭数据库连接
db = getattr(g, '_database', None)
if db is not None:
db.close
@app.route('/api/todos', methods=['GET'])
def get_todos:
db = get_db
cursor = db.execute('SELECT id, content, status FROM todos ORDER BY id DESC')
todos = cursor.fetchall
将行对象转换为字典列表
return jsonify([dict(todo) for todo in todos])
```
在实际开发中,更推荐使用Flask-SQLAlchemy来管理数据库模型和会话,其代码更简洁、安全。
4. 用户认证与安全
小程序涉及用户数据,认证与安全至关重要。微信小程序提供了完善的登录体系,后端需要配合实现。
安装JWT扩展:`pip install pyjwt` 或 `pip install Flask-JWT-Extended`。在处理用户敏感信息(如支付)时,必须结合微信的加密数据解密机制,并使用HTTPS协议传输数据。
三、前后端数据交互与联调
后端API开发完毕后,需要与小程序前端进行联调,实现数据的动态交互。
1. 小程序前端发起网络请求
在小程序的JavaScript逻辑层(.js文件),使用`wx.request` API调用后端接口。在开发阶段,需在微信开启者工具的“详情”->“本地设置”中,勾选“不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书”,以便向本地HTTP后端发送请求。
```javascript
// 小程序前端示例:获取待办列表
Page({
todoList: []
},
onLoad: function {
this.fetchTodos;
},
fetchTodos: function {
const that = this;
wx.request({
url: ' // 你的后端地址
method: 'GET',
success(res) {
if (res.statusCode === 200) {
that.setData({
todoList: res.data
});
} else {
wx.showToast({ title: '获取数据失败', icon: 'none' });
},
fail(err) {
wx.showToast({ title: '网络请求失败', icon: 'none' });
})
})
```
2. 后端处理请求与响应
后端接收前端请求,处理业务逻辑(如查询数据库),然后以JSON格式返回数据。务必做好错误处理,返回明确的HTTP状态码(如200成功、400客户端错误、500服务器错误)和错误信息,便于前端定位问题。
```python
@app.route('/api/todos', methods=['POST'])
def add_todo:
data = request.get_json
if not data or 'content' not in data:
return jsonify({'error': '缺少待办内容'}), 400
content = data['content']
db = get_db
try:
cursor = db.execute('INSERT INTO todos (content, status) VALUES (?, ?)', (content, 'pending'))
mit
new_id = cursor.lastrowid
return jsonify({'id': new_id, 'content': content, 'status': 'pending'}), 201
except sqlite3.Error as e:
return jsonify({'error': '数据库操作失败'}), 500
```
3. 跨域问题与部署前配置
开发阶段的跨域问题已由`flask-cors`解决。当准备上线时,后端服务必须部署到支持HTTPS的服务器(如云服务器),并绑定已备案的域名。需要在微信公众平台的小程序后台“开发”->“开发设置”->“服务器域名”中,将你的后端API域名配置到“request合法域名”列表中。前端`wx.request`的`url`需改为正式的HTTPS地址。
四、核心功能模块开发示例:用户系统
一个完整的用户系统是小程序的基础。下面简述一个结合微信登录的简化用户系统后端实现步骤。
1. 数据库设计:创建`users`表,至少包含`id`(主键)、`openid`(微信用户仅此标识)、`nickname`、`avatar_url`、`created_at`等字段。
2. 编写登录接口:
3. 编写鉴权中间件:对于需要用户登录才能访问的接口(如“我的页面”、“提交订单”),编写一个装饰器或中间件函数,在请求处理前验证前端传来的Token,解析出`openid`,并查询对应用户信息,将其附加到请求上下文中供后续业务逻辑使用。
4. 用户信息更新:提供接口,允许用户更新昵称、头像等非敏感信息。
通过上述步骤,我们系统性地探讨了使用Python和Flask框架开发微信小程序后端服务的完整流程。从环境搭建、Flask应用初始化、RESTful API设计、数据库集成,到用户认证安全与前后端联调,每个环节都基于当前广泛采用的技术实践。选择Python与Flask的组合,其优势在于开发效率高、生态成熟、社区资源丰富,能够帮助开启者,尤其是中小型团队或独立开启者,快速构建出稳定、可扩展的小程序后端服务。值得注意的是,在实际项目开发中,除了功能实现,还需充分考虑代码结构优化、错误日志记录、性能监控、数据库索引优化以及服务器安全配置等工程化实践。本教程提供的是一条清晰的技术路径和核心实现思路,开启者可在此基础上,根据具体业务需求进行深化和扩展,从而稳健地推进小程序项目的开发与上线。






