10 微信小程序开发

news2024/11/28 23:17:56

知识点回顾

  • 1.项目回顾
    • 1.2 小程序
    • 1.3 API
    • 1.4 后台管理
  • 2.后台管理+celery
    • 2.1 基本后台管理
      • 2.1.1 专场
      • 2.1.2 拍品列表
  • 3.逻辑开发
  • 4.部署

各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料!

1.项目回顾

此项目是由【小程序】【API】【后台管理三部分组成】
在这里插入图片描述

1.2 小程序

是供在微信中可以方便访问的页面,从功能&知识点上划分:

  • 首页,展示新闻动态
  • 数据双向绑定
  • 数据展示
  • 重定向
  • 瀑布流布局展示
  • 上翻。相当于分页,为提升效率我们记录ID的最小值,翻页取比ID小的10条数。
    用传统的第N页需要自己处理重复数据。
    假设数据300w条数,传统分页会越翻越慢 /ID极限取值。
  • 下拉。记录ID的最大值
  • 发布页,新闻动态的发布。
  • 调用微信小程序API + 览 + 上传 + 进度条 + 删除图片 + js闭包
  • 将图片上传到腾讯对象存储中 COS
  • 进度条是如何实现? 腾讯对象存储 COS api中有回调函数+组件
  • js闭包
for(var i;i<10;i++){
	(function(arg){
		wx.request({
			····
			success:function(res){
				console.log(arg)
			}
		})
	}(i);
}
//上传示例失败
#闭包需求: 请通过微信小程序实现想某个api发送5个http请求,获取响应之后,将结果添加到指定的字典中。
function func(){
	dict = {
		0:null,
		1:null,
		2:null,
		3:null,
		4:null
	}
	for(var idx; idx < 5; idx++){
		//同步,第一个循环请求进来一直夯住等待结果到来,执行success回调函数。正确
		//异步,所有循环都会执行相当于5个请求并发发出去,此时idx=4,之后如果有结果返回。错误
		//通过闭包 (通过函数制造出来) 可以解决异步问题
		(function(value){
			wx.request({
				url : "......",
				success : function(res){
					// res.data
					dict[value] = res.data
				}
			})
		})(idx)
	}
}
func()
  • 微信API选择位置
  • 选择话题,父子页面传值。

发布页(父) -> 话题(子)
通过页面调用栈找到响应的页面对象,然后调用对象.setData就可以对父页面进行操作值。

  • 登录页,用户注册和登录。
  • 数据双向绑定
  • 短信验证码

腾讯短信服务API (V3版本)
限制:1个小时10条;1天30条 (仁慈)
后台设置
redis的字符串数据类型,存储短信。
为什么用redis存储短信?因为他默认支持超时,性能好(保存在内存中)

  • 用户登录成功之后返回 token (也可以是jwt)
  • 小程序如何存储token?

app.js
操作本地存储

  • 微信 API 获取当前用户信息,官网推荐(button+getUserlnfo)
  • 拍卖专场,专场列表
    api 获取数据列表展示
  • 专场详细,拍品列表。
    api 获取数据 + 数据列表 展示
  • 缴纳保证金
    业务流程?

单场保证金&全场保证金
点击支付,调用支付接口

  • 账号: 企业小程序开发者账号 + 商户平台 = 关联
  • 流程
    1)小程序向 api 后台发送请求,申请支付
    2)api 后台
    (1)生成 prepay_id,商品数据 + 签名 (key 根据 ascii 排序 + md5 加密) ; xml格式数据

登录时候,会获取用户在微信中的唯一ID。

(2)得到数据,根据 prepay_i 在进行构造数据 + 签名;得到的数据数据返回给小程序
3)小程序生成二维码

支付成功之后微信会去调用咱们回调地址,用于保证金状态变更为 已支付

4)如果支付成功之后宕机?【经常问到】

微信会在24小时以内不间断给我们一直发消息

5)余额支付

  • 竞拍

缴纳保证金之后就可以参与竞拍。

  • 事务+锁 (seleted for_update)

1.3 API

  • 遵循 restful 规范
  • 编写 auth 组件实现用户认证

登录访问
无需登录方法
request.user/request.auth

  • 编写视图继承过一些类?

APIView
ListAPIView/CreateAPI …
Mixin,ListModelview,如果继承他则as_view([get:‘list’…})

  • 视图类中自定义钩子

queryset
序列化类
过滤器
perform_save
get authtication() :
return [对象,对象,]

drf 组件非常牛逼,可扩展性特别强。

  • 序列化

1)表单校验
自定义钩子 validate
2)对象序列化
自定义钩子 get
3)通用
自定义字段 & 参数(source、readonly)
nest支持嵌套(高级)

1.4 后台管理

  • 数据基本管理
  • 定时任务 (celery)

创建专场时,需要使用 celery 创建3个定时任务
1.预展时间,需要将当前 专场 + 拍品 状态变更为预展。
2.拍卖时间,需要将当前 专场 + 拍品 状态变更为拍卖中。
3.拍卖结束,竞拍架构进行对比将最高级处理为拍得商品 (订单/退还保证金)。

2.后台管理+celery

给运营人员 & 管理人员对平台的数据进行数据维护和管理。尤其是对于拍卖的业务 专场、拍品图片操作和管理。

2.1 基本后台管理

技术栈:django/html/css/bootstrap/上传文件

2.1.1 专场

  • 列表

在这里插入图片描述

  • 添加

在这里插入图片描述

  • 编辑

在这里插入图片描述

  • 删除

在这里插入图片描述
需要关注的技术点:

  1. 选择时间,通过datetimepicker.js 插件
  2. 上传图片
    图片上传到腾讯对象存储,返回一个图片路径
    讲记录保存到数据库的封面字段中
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from qcloud _cos import CosConfig
from qcloud_cos import CosS3Client

def upload_file(file_object,key,bucket='auction-1251317460',region="ap-chengdu") :
	secret id ='xxx'     #替换为用户的 secretId
	secret_key ='fff'    #替换为用户的 secretKey
	token = None       #使用临时密钥需要传入 Token,默认为空,可不填
	scheme ='https'    #指定使用 http/https 协议来访问 COS,默认为 https,可不填
	config = CosConfig(Region=region,SecretId=secret_id,SecretKey=secret_key,Token=token,Scheme=scheme)
	#2.获取客户端对象
	client = CosS3Client(config)
	
	#3.上传文件
	response = client.upload_file_from_buffer(
		Bucket=bucket,
		Body=file_object,
		Key=key
	)
	return "https://{0}.cos.{1}.myqcloud.com/{2}".format(bucket, region, key)
  1. 编辑页面

添加图片: 在后台获取的文件对象是 TempFile 对象
编辑图片:
未修改,文件对象是 Field 对象。
已修改,文件对象是 TempFile 对象。

2.1.2 拍品列表

  • 预备知识
  1. 前端页面 js 如何实现图片预览
  2. 前端页面 js + aiax,文件上传 (FormData对象)
  • 功能开发
    列表

在这里插入图片描述
-添加

在这里插入图片描述

  • 修改
  • 删除

3.逻辑开发

4.部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1392466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java21 + SpringBoot3集成Spring Data JPA

Java21 SpringBoot3集成Spring Data JPA 文章目录 Java21 SpringBoot3集成Spring Data JPA前言相关技术简介ORM&#xff08;Object-Relational Mapping&#xff0c;对象-关系映射&#xff09;JPA&#xff08;Java Persistence API&#xff0c;Java持久层API&#xff09;Hiber…

HFSS笔记/信号完整性分析(一)——常用快捷键+建模技巧

文章目录 1、常用快捷键2、常用建模技巧2.1 如何由一个无厚度的sheet生成一个有厚度的2.2 如何绘制T形截面的传输线&#xff1f;2.3 自动建立辐射边界法一、法二、 仅做笔记整理与分享。 1、常用快捷键 快捷键功能CtrlDfit it all 以合适的尺寸至于窗口中间CtrlH隐藏object或者…

Docker网络配置网络模式

前言 Docker 的网络模式是一种定义容器如何在网络中通信的方式。Docker 提供了多种网络模式&#xff0c;每种模式都适用于不同的使用场景 一.网络相关概念 1.子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结…

【昕宝爸爸小模块】图文源码详解什么是线程池、线程池的底层到底是如何实现的

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…

【送书活动七期】CMeet系列 技术生态沙龙:技术人职业交流会·杭州场-转鸿蒙 对应用开发来说是否是职业发展新机会

CSDN致力于促进城市区域内尖端新兴技术开发者交流,提供开放自由的切磋平台。在近期热议的话题中,“华为鸿蒙系统不再兼容安卓应用”的消息成了程序员们广泛关注并引发思考的问题。 因此便有了我们此次的活动探讨议题! 目录 题外话开场简单介绍活动主办方介绍活动话题讨论升职加…

Intewell-Win_V2.0.1_release版本正式发布

Intewell-Win_V2.0.1_release版本 版本号&#xff1a;V2.0.1 版本发布类型&#xff1a;release正式版本 版本特点 1.优化虚拟网卡使用 2.实时性优化 运行环境推荐 Intewell developer可以运行在windows7及windows10 64位 支持硬件列表

小程序系列--7.页面配置以及网络数据请求

一. 页面配置 1.页面配置文件的作用 小程序中&#xff0c;每个页面都有自己的 .json 配置文件&#xff0c;用来对当前页面的窗口外观、页面效果等进行配置。 2. 页面配置和全局配置的关系 3. 页面配置中常用的配置项 二、网络数据请求 1. 小程序中网络数据请求的限制 2. 配…

2024年美赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

rust跟我学三:文件时间属性获得方法

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎样获得杀毒软件的病毒库时间的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址…

AI大模型学习笔记之二:什么是 AI 大模型的训练和推理?

在人工智能&#xff08;AI&#xff09;的领域中&#xff0c;我们经常听到训练&#xff08;Training) 和 推理&#xff08;Inference) 这两个词汇&#xff0c;它们是构建强大 AI 模型的关键步骤。我们通过类比人类的学习过程来理解这两个概念&#xff0c;可以更加自然而生动地理…

详解React与Vue的性能对比

React 和 Vue 是当前最流行的前端开发框架之一。它们都具有高度的灵活性和可扩展性&#xff0c;但在某些方面有所不同。在本篇文章中&#xff0c;我将详细介绍 React 和 Vue 这两个技术&#xff0c;并比较它们的优点和缺点。 目录 1. React&#xff1a; 1.1 优点&#xff1a; …

杨中科 .NETCORE EFCORE第七部分 一对一,多对多

一对一 一对一关系配置 1、builder.HasOne(o >o.Delivery).WithOne(d>d.Order).HasForeignKey(d>dOrderId); 2、测试插入和获取数据 示例 新建 Order 新建 Delivery DeliveryConfig OrderConfig 执行 迁移命令 查看数据库 测试数据插入 运行查看数据 多对多…

Redis 服务器 命令

目录 1.Redis Client Pause 命令 - 在指定时间内终止运行来自客户端的命令简介语法可用版本: > 2.9.50返回值: 返回 OK。如果 timeout 参数是非法的返回错误。 示例 2.Redis Debug Object 命令 - 获取 key 的调试信息简介语法可用版本: > 1.0.0返回值: 当 key 存在时&…

在程序中链接静态库 和 动态库

9. 链接库 在编写程序的过程中&#xff0c;可能会用到一些系统提供的动态库或者自己制作出的动态库 或者静态库文件&#xff0c;cmake中也为我们提供了相关的加载动态库的命令hehedalinux:~/Linux/loveDBTeacher-v3$ tree . ├── CMakeLists.txt ├── include │ └── …

无法打开浏览器开发者工具的可能解决方法

网页地址: https://jx.xyflv.cc/?url视频地址url 我在抖音里面抓了一个视频地址, 获取到响应的json数据, 找到里面的视频地址信息 这个网站很好用: https://www.jsont.run/ 可以使用js语法对json对象操作, 找到所有视频的url地址 打开网页: https://jx.xyflv.cc/?urlhttps:…

k8s集群环境搭建以及插件安装

前置条件 终端工具MobaXterm很好用。 1、虚拟机三台&#xff08;ip按自己的网络环境相应配置&#xff09;(master/node) 节点ipk8s-master192.168.200.150k8s-node1192.168.200.151k8s-node2192.168.200.152 2、关闭防火墙(master/node) systemctl stop firewalld systemc…

python调用windows弹窗

python调用windows弹窗 import win32api import _thread # 引入线程的模块 比较老的模块 新的 threadingdef run(i):win32api.MessageBox(0, "您的{}号大宝贝上线了".format(i), "来自小莹的问候", 2)for i in range(5):_thread.start_new_thread(run…

入门指南:使用STM32微控制器进行ADC数据采集

使用STM32微控制器进行ADC&#xff08;模数转换器&#xff09;数据采集是嵌入式系统开发中常见的任务。本文将介绍如何通过STM32CubeMX和HAL库函数进行ADC数据采集&#xff0c;并提供相应的代码示例。 1. STM32CubeMX配置 首先&#xff0c;使用STM32CubeMX工具配置STM32微控制…

一条sql是如何运行的

在我们平时使用sql的时候&#xff0c;基本是基于黑盒的使用方式&#xff0c;在客户端输入一条sql语句&#xff0c;然后回显想要的数据&#xff0c;对于mysql server端内部如何运行的以及与存储引擎如何交互的不得而知。 通过下面一幅图&#xff0c;大致描述客户端和服务端交互…

【数据结构】归并排序的两种实现方式与计数排序

前言&#xff1a;在前面我们讲了各种常见的排序&#xff0c;今天我们就来对排序部分收个尾&#xff0c;再来对归并排序通过递归和非递归的方法进行实现&#xff0c;与对计数排序进行简单的学习。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏…