当前位置: 首页 > news >正文

抢红包小程序

抢红包小程序 红包大战

# 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 埃氏筛法+快速幂

本题目使用费马定理时&#xff0c;我随机定义了10个数字&#xff0c;循环用费马小定理判断&#xff0c;数组中的值不用和我的相同&#xff0c;随机即可。 #include <iostream> using namespace std; typedef unsigned long long ll; bool isPrime[65007]; ll a[10]; voi…...

C++--红黑树

1.什么是红黑树 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出俩倍&#xff0c;因…...

Unity 找不到 Navigation 组件的解决

当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时&#xff0c;有时竟然会发现我们的菜单栏里面找不到 该组件 这时我们应该怎么办&#xff1f; 请确保你的项目中已经导入了Unity的AI模块。要导入该模块&#xff0c;请打开"Project Settings"&am…...

【js】时间和时间戳转换、日期格式化

1、时间戳转换日期方法 &#xff08;格式&#xff1a;2023-08-17&#xff09; 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&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff0c;使用以下命令更新本地软件包列表&#xff1a; sudo apt-get update然后&#xff0c;使用以下命令安装glog库及其开发工具&#xff1a; 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技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着信息技术的快速发…...

ubuntu20.04磁盘满了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%

问题 执行 mysql 大文件导入任务&#xff0c;最后快完成了&#xff0c;查看结果发现错了&#xff01;悲催&#xff01;都执行了 两天了 The table ‘XXXXXX’ is full &#xff1f; 磁盘满了&#xff1f; 刚好之前另一个 centos 服务器上也出现过磁盘满了&#xff0c;因此&a…...

【制作npm包4】api-extractor 学习

制作npm包目录 本文是系列文章&#xff0c; 作者一个橙子pro&#xff0c;本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…...

神经网络基础-神经网络补充概念-52-正则化网络的激活函数

概念 正则化是一种用于减少过拟合&#xff08;overfitting&#xff09;的技术&#xff0c;可以在神经网络的各个层次中应用&#xff0c;包括激活函数。激活函数的正则化主要目的是减少神经网络的复杂度&#xff0c;防止网络在训练集上过度学习&#xff0c;从而提高泛化能力。 …...

代码随想录训练营day56| 583. 两个字符串的删除操作 72. 编辑距离

TOC 前言 代码随想录算法训练营day56 一、Leetcode 583. 两个字符串的删除操作 1.题目 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea",…...

神经网络基础-神经网络补充概念-55-为什么是ML策略

“ML策略”&#xff08;Machine Learning Strategies&#xff09;是指在解决机器学习问题时&#xff0c;采取的一系列方法、技巧和策略。选择适当的ML策略对于获得高质量的模型和结果非常重要。以下是为什么要考虑ML策略的一些原因&#xff1a; 问题适应性&#xff1a;不同的机…...

C++初阶语法——内部类

前言&#xff1a;内部类&#xff0c;顾名思义是定义在类中的类&#xff0c;许多人会以为它属于外部的类&#xff0c;实际上并不是&#xff0c;它们是两个独立的类&#xff0c;但是内部类受外部类类域的限制。 目录 一.概念二.特性1.内部类和外部类相互独立2.内部类是外部类的友…...

Java基础(十四)面向对象编程 OOP 多态

Java面向对象基础知识笔记&#xff08;四&#xff09; 1. 对象数组的使用 在Java中&#xff0c;我们可以创建包含对象的数组。对象数组是一种特殊类型的数组&#xff0c;其中每个元素都是一个对象的引用。你可以将任何类的对象存储在对象数组中&#xff0c;并通过索引来访问和操…...

【Android】解决Lint found fatal errors while assembling a release target

报错信息&#xff1a; Android在debug模式下打包没有问题&#xff0c;但是在打包release版本时出现一下问题&#xff1a; 结果图 原因 我项目的原因是因为把正式、测试地址放到代码里了&#xff0c;忘记选中正式环境的地址&#xff0c;导致打正式包有问题&#xff1b;大家如果…...

CF1195E OpenStreetMap 题解

很好的单调队列题。 题目传送门 题目意思&#xff1a; 给定一个 n m n\times m nm 的矩阵&#xff0c;求出所有大小为 a b a\times b ab 的子矩形中的最小值的和。 思路&#xff1a; 通过题目给的要求建立二维数组 h h h。通过单调队列一行一行地扫&#xff0c;将扫出来…...

微信营销系统如何使用效果会更好

微信作为中国最大的社交平台之一&#xff0c;已经成为企业私域营销的重要阵地。在这个庞大的社交网络中&#xff0c;如何使用微信营销系统&#xff0c;将直接影响到企业的营销效果。本文将深入探讨如何更好地利用微信营销系统&#xff0c;以实现更好的私域营销效果。 1. 确定营…...

Linux开机启动程序添加root权限

Linux添加开机启动程序 Debain、Ubuntu系列Linux开机之后会执行/etc/rc.local文件中的命令&#xff0c;所以&#xff0c;如果是想添加登陆用户所具有权限的操作&#xff0c;可以在文件中exit 0之前添加开机自动执行的脚本命令。或者将执行脚本的权限修改为当前登录用户具有执行…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...