抢红包小程序
抢红包小程序 红包大战
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('login/', views.login, name='login'),
path('create_red_packet/', views.create_red_packet, name='create_red_packet'),
path('join_red_packet/<int:red_packet_id>/', views.join_red_packet, name='join_red_packet'),
path('red_packet_detail/<int:red_packet_id>/', views.red_packet_detail, name='red_packet_detail'),
path('shake_red_packet/<int:red_packet_id>/', views.shake_red_packet, name='shake_red_packet'),
path('my_red_packets/', views.my_red_packets, name='my_red_packets'),
]
# models.py
from django.db import models
from django.contrib.auth.models import User
class RedPacket(models.Model):
creator = models.ForeignKey(User, on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=10, decimal_places=2)
quantity = models.IntegerField()
rules = models.TextField()
start_time = models.DateTimeField()
end_time = models.DateTimeField()
created_time = models.DateTimeField(auto_now_add=True)
class RedPacketActivity(models.Model):
red_packet = models.ForeignKey(RedPacket, on_delete=models.CASCADE)
participant = models.ForeignKey(User, on_delete=models.CASCADE)
amount_received = models.DecimalField(max_digits=10, decimal_places=2, null=True)
received_time = models.DateTimeField(null=True)
# views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import RedPacket, RedPacketActivity
@login_required
def create_red_packet(request):
if request.method == 'POST':
amount = request.POST['amount']
quantity = request.POST['quantity']
rules = request.POST['rules']
start_time = request.POST['start_time']
end_time = request.POST['end_time']
red_packet = RedPacket.objects.create(
creator=request.user,
amount=amount,
quantity=quantity,
rules=rules,
start_time=start_time,
end_time=end_time
)
return redirect('red_packet_detail', red_packet.id)
return render(request, 'create_red_packet.html')
@login_required
def join_red_packet(request, red_packet_id):
red_packet = RedPacket.objects.get(id=red_packet_id)
if request.method == 'POST':
red_packet_activity = RedPacketActivity.objects.create(
red_packet=red_packet,
participant=request.user
)
return redirect('shake_red_packet', red_packet_activity.id)
return render(request, 'join_red_packet.html', {'red_packet': red_packet})
@login_required
def red_packet_detail(request, red_packet_id):
red_packet = RedPacket.objects.get(id=red_packet_id)
return render(request, 'red_packet_detail.html', {'red_packet': red_packet})
@login_required
def shake_red_packet(request, red_packet_activity_id):
red_packet_activity = RedPacketActivity.objects.get(id=red_packet_activity_id)
if request.method == 'POST':
# generate random amount for the user
red_packet_activity.amount_received = random_amount
red_packet_activity.received_time = timezone.now()
red_packet_activity.save()
return redirect('red_packet_detail', red_packet_activity.red_packet.id)
return render(request, 'shake_red_packet.html', {'red_packet_activity': red_packet_activity})
@login_required
def my_red_packets(request):
red_packets = RedPacket.objects.filter(creator=request.user)
return render(request, 'my_red_packets.html', {'red_packets': red_packets})
# templates/create_red_packet.html
{% extends 'base.html' %}
{% block content %}
<h1>Create Red Packet</h1>
<form method="POST" action="{% url 'create_red_packet' %}">
{% csrf_token %}
<label for="amount">Amount:</label>
<input type="text" name="amount" id="amount">
<br>
<label for="quantity">Quantity:</label>
<input type="number" name="quantity" id="quantity">
<br>
<label for="rules">Rules:</label>
<textarea name="rules" id="rules"></textarea>
<br>
<label for="start_time">Start Time:</label>
<input type="datetime-local" name="start_time" id="start_time">
<br>
<label for="end_time">End Time:</label>
<input type="datetime-local" name="end_time" id="end_time">
<br>
<button type="submit">Create</button>
</form>
{% endblock %}
# templates/join_red_packet.html
{% extends 'base.html' %}
{% block content %}
<h1>Join Red Packet</h1>
<h2>Red Packet Details:</h2>
<p>Amount: {{ red_packet.amount }}</p>
<p>Quantity: {{ red_packet.quantity }}</p>
<p>Rules: {{ red_packet.rules }}</p>
<p>Start Time: {{ red_packet.start_time }}</p>
<p>End Time: {{ red_packet.end_time }}</p>
<form method="POST" action="{% url 'join_red_packet' red_packet.id %}">
{% csrf_token %}
<button type="submit">Join</button>
</form>
{% endblock %}
# templates/red_packet_detail.html
{% extends 'base.html' %}
{% block content %}
<h1>Red Packet Detail</h1>
<h2>Red Packet Details:</h2>
<p>Amount: {{ red_packet.amount }}</p>
<p>Quantity: {{ red_packet.quantity }}</p>
<p>Rules: {{ red_packet.rules }}</p>
<p>Start Time: {{ red_packet.start_time }}</p>
<p>End Time: {{ red_packet.end_time }}</p>
{% if red_packet_activity.amount_received %}
<p>Amount Received: {{ red_packet_activity.amount_received }}</p>
<p>Received Time: {{ red_packet_activity.received_time }}</p>
{% else %}
<form method="POST" action="{% url 'shake_red_packet' red_packet_activity.id %}">
{% csrf_token %}
<button type="submit">Shake Red Packet</button>
</form>
{% endif %}
{% endblock %}
# templates/shake_red_packet.html
{% extends 'base.html' %}
{% block content %}
<h1>Shake Red Packet</h1>
<h2>Red Packet Details:</h2>
<p>Amount: {{ red_packet_activity.red_packet.amount }}</p>
<p>Quantity: {{ red_packet_activity.red_packet.quantity }}</p>
<p>Rules: {{ red_packet_activity.red_packet.rules }}</p>
<p>Start Time: {{ red_packet_activity.red_packet.start_time }}</p>
<p>End Time: {{ red_packet_activity.red_packet.end_time }}</p>
<form method="POST" action="{% url 'shake_red_packet' red_packet_activity.id %}">
{% csrf_token %}
<button type="submit">Open Red Packet</button>
</form>
{% endblock %}
# templates/my_red_packets.html
{% extends 'base.html' %}
{% block content %}
<h1>My Red Packets</h1>
{% for red_packet in red_packets %}
<h2>Red Packet Details:</h2>
<p>Amount: {{ red_packet.amount }}</p>
<p>Quantity: {{ red_packet.quantity }}</p>
<p>Rules: {{ red_packet.rules }}</p>
<p>Start Time: {{ red_packet.start_time }}</p>
<p>End Time: {{ red_packet.end_time }}</p>
{% endfor %}
{% endblock %}
以上是一个简单的红包抢夺小程序的Django后端代码,包含了登录、创建红包、参与红包、查看红包详情、摇一摇获取红包、查看个人红包记录等功能。具体的前端代码需要根据实际需求进行开发。希望对你有帮助!
本文由 mdnice 多平台发布
相关文章:
抢红包小程序
抢红包小程序 红包大战 # urls.pyfrom django.urls import pathfrom . import viewsurlpatterns [ path(login/, views.login, namelogin), path(create_red_packet/, views.create_red_packet, namecreate_red_packet), path(join_red_packet/<int:red_packet_id…...
UVA 10006 埃氏筛法+快速幂
本题目使用费马定理时,我随机定义了10个数字,循环用费马小定理判断,数组中的值不用和我的相同,随机即可。 #include <iostream> using namespace std; typedef unsigned long long ll; bool isPrime[65007]; ll a[10]; voi…...
C++--红黑树
1.什么是红黑树 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因…...
Unity 找不到 Navigation 组件的解决
当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时,有时竟然会发现我们的菜单栏里面找不到 该组件 这时我们应该怎么办? 请确保你的项目中已经导入了Unity的AI模块。要导入该模块,请打开"Project Settings"&am…...
【js】时间和时间戳转换、日期格式化
1、时间戳转换日期方法 (格式:2023-08-17) function timestampToDate(date) {var date new Date(date);var YY date.getFullYear() -;var MM (date.getMonth() 1 < 10 ? 0 (date.getMonth() 1) : date.getMonth() 1) -;var DD …...
glog体验第一天(0)glog介绍和安装
在Ubuntu上安装glog,可以按照以下步骤进行操作: 打开终端,使用以下命令更新本地软件包列表: sudo apt-get update然后,使用以下命令安装glog库及其开发工具: sudo apt-get install -y libgoogle-glog-de…...
Android 13像Settings一样获取SIM卡信息
一.背景 由于客户定制的Settings里面需要获取到SIM卡信息,所以需要实现此功能。 目录 一.背景 二.前提条件 三.调用api 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍)功能_…...
Can‘t find end of central directory : is this a zip file ? at XMLHttpRequest
导出woed出现这个报错,原因其实很简单,路径写错了, 这个word首先必须是docx格式,然后必须放在public文件包下 如果放在public文件包下还没有用,则放在public包下 参考帖子: https://www.cnblogs.com/hejun26/p/13647927.html...
基于SpringBoot+Thymeleaf仓库管理系统
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着信息技术的快速发…...
ubuntu20.04磁盘满了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%
问题 执行 mysql 大文件导入任务,最后快完成了,查看结果发现错了!悲催!都执行了 两天了 The table ‘XXXXXX’ is full ? 磁盘满了? 刚好之前另一个 centos 服务器上也出现过磁盘满了,因此&a…...
【制作npm包4】api-extractor 学习
制作npm包目录 本文是系列文章, 作者一个橙子pro,本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…...
神经网络基础-神经网络补充概念-52-正则化网络的激活函数
概念 正则化是一种用于减少过拟合(overfitting)的技术,可以在神经网络的各个层次中应用,包括激活函数。激活函数的正则化主要目的是减少神经网络的复杂度,防止网络在训练集上过度学习,从而提高泛化能力。 …...
代码随想录训练营day56| 583. 两个字符串的删除操作 72. 编辑距离
TOC 前言 代码随想录算法训练营day56 一、Leetcode 583. 两个字符串的删除操作 1.题目 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 "sea",…...
神经网络基础-神经网络补充概念-55-为什么是ML策略
“ML策略”(Machine Learning Strategies)是指在解决机器学习问题时,采取的一系列方法、技巧和策略。选择适当的ML策略对于获得高质量的模型和结果非常重要。以下是为什么要考虑ML策略的一些原因: 问题适应性:不同的机…...
C++初阶语法——内部类
前言:内部类,顾名思义是定义在类中的类,许多人会以为它属于外部的类,实际上并不是,它们是两个独立的类,但是内部类受外部类类域的限制。 目录 一.概念二.特性1.内部类和外部类相互独立2.内部类是外部类的友…...
Java基础(十四)面向对象编程 OOP 多态
Java面向对象基础知识笔记(四) 1. 对象数组的使用 在Java中,我们可以创建包含对象的数组。对象数组是一种特殊类型的数组,其中每个元素都是一个对象的引用。你可以将任何类的对象存储在对象数组中,并通过索引来访问和操…...
【Android】解决Lint found fatal errors while assembling a release target
报错信息: Android在debug模式下打包没有问题,但是在打包release版本时出现一下问题: 结果图 原因 我项目的原因是因为把正式、测试地址放到代码里了,忘记选中正式环境的地址,导致打正式包有问题;大家如果…...
CF1195E OpenStreetMap 题解
很好的单调队列题。 题目传送门 题目意思: 给定一个 n m n\times m nm 的矩阵,求出所有大小为 a b a\times b ab 的子矩形中的最小值的和。 思路: 通过题目给的要求建立二维数组 h h h。通过单调队列一行一行地扫,将扫出来…...
微信营销系统如何使用效果会更好
微信作为中国最大的社交平台之一,已经成为企业私域营销的重要阵地。在这个庞大的社交网络中,如何使用微信营销系统,将直接影响到企业的营销效果。本文将深入探讨如何更好地利用微信营销系统,以实现更好的私域营销效果。 1. 确定营…...
Linux开机启动程序添加root权限
Linux添加开机启动程序 Debain、Ubuntu系列Linux开机之后会执行/etc/rc.local文件中的命令,所以,如果是想添加登陆用户所具有权限的操作,可以在文件中exit 0之前添加开机自动执行的脚本命令。或者将执行脚本的权限修改为当前登录用户具有执行…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
