wx供重浩:创享日记
对话框发送:python成语
获取完整源码源文件+说明文档+配置教程等


启动Idiom/flask下的venv虚拟环境,运行python manage.py runserver命令启动Flask。然后打开微信开发者工具并扫码登录,选择flask/weapp-idiom小程序,加载完成后进入小程序登录页面,如图1所示。单击“微信登录”提示微信授权,如图2所示。单击“允许”按钮,即可进入到小程序首页。如图3所示。


单击“开始挑战”,进入答题页面,如图4所示。在答题页面,鼠标单击选项区的汉字,则会将该汉字填充到当前的答案框中。如要修改答案,可以单击答案中汉字,则该汉字退回到选项区。


如果填写4个汉字后,答案正确,则进入下一关,如图5所示。否则提示错误信息,如图6所示。


全部通关以后,提示通关信息如图7所示。单击“告诉朋友”按钮,即可分享好友,如图8所示。


单击“回到主页”,在主页点击“排行榜”即可查看比赛排行。如图9所示。


小程序因其“用完即走”的特性备用用户欢迎,其中各种答题类的小程序因具备一定的趣味性而异常火爆,下面,我们就模拟猜成语小程序,开发一款寓教于乐的“看图猜成语小程序”。

基本技能要求:

  • flask 基础知识
  • 小程序基础知识

开发及运行环境:

  • 虚拟环境:virtualenv。
  • 数据库:PyMySQL驱动+ MySQL。
  • 开发工具:微信开发者工具+PyCharm / Sublime Text 3。
  • PythonWeb 框架:Flask。
  • 接口调试工具:Postman。

数据库设计:

本项目采用MySQL数据库,数据库名称为idiom。在小程序中涉及用户信息和题目信息,所以在idom数据库下包含2张数据表,数据表名称及作用如下:

  • user表:存储用户信息,包括用户昵称、头像和排名等。
  • exam表:存储题目信息,包括图片、答案和备选项等。

使用说明

  1. 使用pip安装virtualenv,命令如下:
pip install virtualenv
  1. 在“flask/”目录下,创建venv 虚拟环境,命令如下:
virtualenv  venv
  1. 启动虚拟环境,
    windows下命令如下:
venv\scripts\activate

mac下命令如下:

source venv\bin\activate
  1. 安装依赖,命令如下:
pip install -r requirements.txt
  1. 创建数据库,命名为idom
  2. 使用数据迁移命令
python manage.py db init
python manage.py db migrate
python manage.py db upgrade
  1. 创建完数据表后,将“flask\idiom.sql”文件导入到数据库
  2. 启动python,运行如下命令:
python manage.py runserver
  1. 开启小程序调试工具,新建项目,项目目录是“idiom/weapp-idiom”。

部分源码如下,其余完整详见下载。

from flask import Blueprint
from app.models import Member,Exam
from flask import jsonify,g,request
from flask_httpauth import HTTPTokenAuth
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from app.libs.MemberService import MemberService
from app import db
from werkzeug.http import HTTP_STATUS_CODESapi = Blueprint('api', __name__)# 设置Token验证
auth = HTTPTokenAuth(scheme='Bearer')
serializer = Serializer('mrsoft', expires_in=1800)@auth.verify_token
def verify_token(token):try:data = serializer.loads(token)    # 验证tokenexcept:return Falseif 'user_id' in data:g.user_id = data['user_id']return Truereturn False@auth.error_handler
def token_auth_error():return error_response(401)def error_response(status_code, message=None):response = {"code": status_code,"msg": HTTP_STATUS_CODES.get(status_code),"data": {}}return jsonify(response)@api.route('/users/wx_login',methods=['POST'])
def wx_login():req = request.values # 接受数据# 接受数据nickname = req['nickname'] if 'nickname' in req else ''avatar = req['avatar'] if 'avatar' in req else ''# 判断code 是否存在code = req['code'] if 'code' in req else ''if not code or len( code ) < 1:result = {"code": -1,"msg": "需要微信授权code","data": {}}return jsonify(result)# 根据code,获取openidopenid = MemberService.getWeChatOpenId( code )if openid is None:result = {"code":-1,"msg":"调用微信出错","data":{}}return jsonify(result)# 如果用户存在,写入member表中member = Member.query.filter_by(openid=openid).first()if not member:member = Member(openid   = openid,nickname = nickname,avatar   = avatar,sesion   = sesion,)db.session.add(member)db.session.commit()sesionTotal = db.session.query(Exam).count()token = serializer.dumps({'user_id': member.id})       # 生成token# 返回结果result = {"code":1,"msg":"登录成功","data":{"userInfo":{"userId": member.id,"nickName": member.nickname,"avatar": member.avatar,"sesion": member.sesion,},"sesionTotal":sesionTotal,"token": token.decode(),  # byte 转化为string}}return jsonify(result)@api.route('/exams',methods=["POST"])
@auth.login_required
def get_exam():sesion = request.values['sesion']try:exam = Exam.query.filter_by(id=sesion).first()result = {"code": 1,"data": {"answer": exam.answer,"candidates": exam.candidates.split(","),"image": exam.pictureUrl},"message": "请求成功"}except:result = {"code": 0,"data": {},"message": "请求失败"}return jsonify(result)@api.route('/exams/update_sesion',methods=["POST"])
@auth.login_required
def update():sesion = int(request.values['sesion'])userId = int(request.values['userId'])# 更改用户关卡try:member = Member.query.filter_by(id=userId).first()member.sesion = sesiondb.session.commit()result = {"code": 1,"msg": "请求成功","data": {"sesion": sesion}}except:result = {"code": 0,"msg": "更新失败","data": {}}return jsonify(result)@api.route('/rank',methods=["POST"])
@auth.login_required
def get_rank():'''排行榜'''members = Member.query.order_by(Member.sesion.desc()).limit(10).all()data = []for item in members:userInfo = {"userId": item.id,"nickname": item.nickname,"avatar": item.avatar,"sesion": item.sesion,}data.append(userInfo)# 返回结果result = {"code":1,"msg":"请求成功","data": data}return jsonify(result)

python微信小程序看图猜成语源码flask相关推荐

  1. Python GUI案例之看图猜成语开发(第三篇)

    Python GUI案例之看图猜成语(第三篇) 前言 看图猜成语小程序开发(第三篇) 游戏闯关模式页面 Python GUI案例之看图猜成语开发(第一篇) Python GUI案例之看图猜成语开发(第 ...

  2. Python GUI案例之看图猜成语开发(第二篇)

    Python GUI案例之看图猜成语(第二篇) 前言 看图猜成语小程序开发(第二篇) 游戏选择模式页面 游戏训练模式页面 Python GUI案例之看图猜成语开发(第一篇) Python GUI案例之 ...

  3. 最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  4. 微信小程序:强大工具箱组合源码

    这是一个比较强大的一款工具箱 内有去水印功能(支持几十家平台去水印) 朋友圈功能|(发圈套图等) 头像,朋友圈封面,壁纸等 另外还有快递查询,手持弹幕等 另外还有一个强大的去水印历史记录 历史记录可以 ...

  5. 微信小程序更换头像的实现源码

    微信小程序更换头像的实现源码 html <view class='top_head_border'> <image class='top_head' src='{{head}}'&g ...

  6. 小程序源码:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  7. 最新wordpress黑金壁纸微信小程序 二开修复版源码下载

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多, 介绍: WordPress独立后台壁纸小 ...

  8. 微信小程序:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  9. 到家服务公司php源码,微信小程序-仿五洲到家商城源码

    微信小程序-仿五洲到家商城源码 微信小程序仿五洲到家商城源码是一款精仿五洲到家app界面的小程序源码,适用于各类小程序商城系统,功能及模块均值得借鉴! 对应功能模块 > * 首页(定位成功情况且 ...

最新文章

  1. Xamarin Essentials教程打开文件
  2. EasyUI 树菜单
  3. 离散制造业的数据采集之路
  4. 均匀白噪声的定义及特点_职业卫生噪声布点与检测实务
  5. instancing render
  6. Redis的安装配置与介绍(Windows版)
  7. Windows DDK要点指南
  8. 6410的系统时钟设置(上)---6410时钟控制逻辑框架分析
  9. HEVC---xCompressCU()函数作用及位置
  10. vue各种组件(不断增加中...)
  11. 双向冒泡排序(C语言)
  12. 【ASP.NET】QQ登录,新浪微博登录。
  13. dlibdotnet 人脸相似度源代码_C#开发的人脸左右相似度计算软件源码分析
  14. 格雷码与二进制相互转换的verilog实现
  15. Linux工具篇 | Linux下安装repo工具
  16. 时间序列之向量自回归检验VAR(自相关性)(2)
  17. java工具类解压缩zip和rar
  18. 滑膜间充质干细胞复合壳聚糖水凝胶/角蛋白壳聚糖水凝胶复合材料/壳聚糖/海藻酸纳复合水凝胶的制备
  19. php tp 聚合数据接口,TP5结合聚合数据天气预报API查询天气
  20. c语言中\0’ ,‘0’, “0” ,0的区别

热门文章

  1. L2-4 网红点打卡攻略 (25 分)
  2. c语言处理用户错误输入,C语言输入用户名和密码,如果正确显示欢迎语句(你好,欢迎),否则提示具体错误(用...
  3. Linux which命令
  4. 联想电脑如何改w ndows更新,联想电脑关闭自动更新_联想怎么关闭自动更新
  5. 解决h5人民币符号在华为等个别手机上不显示
  6. 过完春节,我最想见到的人是贾跃亭
  7. 收藏!一文掌握智能体协同创新实验室解决方案架构以及搭建流程
  8. 降噪蓝牙耳机选择什么品牌好?性价比高的降噪蓝牙耳机测评
  9. 【excel使用】批量删除excel工作簿中多个工作表的同一列内容?
  10. 去重计数 removeDuplicates python