181 8488 6988

首页小程序定制小程序开发python开发小程序教程

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. 用户认证与安全

小程序涉及用户数据,认证与安全至关重要。微信小程序提供了完善的登录体系,后端需要配合实现。

  • 微信登录流程:前端调用`wx.login`获取临时凭证`code`,将其发送至后端。
  • 后端服务:接收`code`后,凭借小程序的AppID和AppSecret,向微信服务器请求`session_key`和`openid`。`openid`是用户在当前小程序内的仅此标识。
  • 生成自定义登录态:后端可以使用JWT(JSON Web Token)或自定义Token,将`openid`等信息加密后生成一个令牌返回给前端。前端后续请求时携带此令牌,后端验证令牌有效性以识别用户身份。
  • 安装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. 编写登录接口:

  • 接收前端传来的`code`。
  • 构造参数,向微信接口服务`
  • 检查数据库中是否存在此`openid`的用户,若不存在则创建新用户记录。
  • 生成自定义登录态(如JWT Token),将`openid`等信息包含其中,返回给前端。
  • 3. 编写鉴权中间件:对于需要用户登录才能访问的接口(如“我的页面”、“提交订单”),编写一个装饰器或中间件函数,在请求处理前验证前端传来的Token,解析出`openid`,并查询对应用户信息,将其附加到请求上下文中供后续业务逻辑使用。

    4. 用户信息更新:提供接口,允许用户更新昵称、头像等非敏感信息。

    通过上述步骤,我们系统性地探讨了使用Python和Flask框架开发微信小程序后端服务的完整流程。从环境搭建、Flask应用初始化、RESTful API设计、数据库集成,到用户认证安全与前后端联调,每个环节都基于当前广泛采用的技术实践。选择Python与Flask的组合,其优势在于开发效率高、生态成熟、社区资源丰富,能够帮助开启者,尤其是中小型团队或独立开启者,快速构建出稳定、可扩展的小程序后端服务。值得注意的是,在实际项目开发中,除了功能实现,还需充分考虑代码结构优化、错误日志记录、性能监控、数据库索引优化以及服务器安全配置等工程化实践。本教程提供的是一条清晰的技术路径和核心实现思路,开启者可在此基础上,根据具体业务需求进行深化和扩展,从而稳健地推进小程序项目的开发与上线。

    18184886988

    昆明网站建设公司电话

    昆明网站建设公司地址