抢红包小程序

抢红包小程序 红包大战

# 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 多平台发布

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

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

相关文章

Unity 之 Input类

文章目录 总述具体介绍 总述 Input 类是 Unity 中用于处理用户输入的重要工具&#xff0c;它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类&#xff0c;您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 I…

数学建模-模型详解(2)

微分模型 当谈到微分模型时&#xff0c;通常指的是使用微分方程来描述某个系统的动态行为。微分方程是描述变量之间变化率的数学方程。微分模型可以用于解决各种实际问题&#xff0c;例如物理学、工程学、生物学等领域。 微分模型可以分为两类&#xff1a;常微分方程和偏微分…

《学爸》成爆款背后,马栏山以BOT模式示范“文化+科技”路径

文|智能相对论 作者|范柔丝 今年暑期档的爆款电影&#xff0c;必有《学爸》一席之地。 这部给众多深陷教育旋涡的家长带来深刻思考的电影&#xff0c;就是马栏山视频文创产业园经过3年筹备&#xff0c;首部本土孵化出品的教育现实体裁院线大电影。 据猫眼专业版数据&#x…

初步认识OSPF的大致内容(第三课)

1 路由的分类 直连路由&#xff08;Directly Connected Route&#xff09;是指网络拓扑结构中相邻两个网络设备直接相连的路由&#xff0c;也称为直接路由。如果两个设备属于同一IP网络地址&#xff0c;那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择…

Vue3 用父子组件通信实现页面页签功能

一、大概流程 二、用到的Vue3知识 1、组件通信 &#xff08;1&#xff09;父给子 在vue3中父组件给子组件传值用到绑定和props 因为页签的数组要放在父页面中&#xff0c; data(){return {tabs: []}}, 所以顶部栏需要向父页面获取页签数组 先在页签页面中定义props用来接…

谷粒商城环境搭建一:Docker容器部署

Docker容器部署 VMware虚拟机安装 参考&#xff1a;VMware虚拟机安装Linux教程 Docker安装 Linux安装Docker # 1.更新apt包索引 sudo apt-get update# 2.安装以下包以使apt可以通过HTTPS使用存储库&#xff08;repository&#xff09; sudo apt-get install -y apt-transpor…

对称加密算法

使用AES加密 AES算法是目前应用最广泛的加密算法。比较常见的工作模式是ECB和CBC。 ECB模式 import java.security.*; import java.util.Base64;import javax.crypto.*; import javax.crypto.spec.*;public class Main {public static void main(String[] args) throws Exce…

Git初次使用

什么是版本控制 版本控制系统&#xff08;VCS&#xff09;是一种记录文件内容变化以便将来查阅特定版本修订情况的系统。 使用版本控制系统在出错时、需要时可以回溯。 1. 本地版本控制 系统记录文件的差异变化。 2.集中化的版本控制 使用单一服务器统一管理。 缺点是服务…

敏捷管理工具/国内软件敏捷开发工具

​Scrum中非常强调公开、透明、直接有效的沟通&#xff0c;这也是“可视化的管理工具”在敏捷开发中如此重要的原因之一。通过“可视化的管理工具”让所有人直观的看到需求&#xff0c;故事&#xff0c;任务之间的流转状态&#xff0c;可以使团队成员更加快速适应敏捷开发流程。…

MySQL和Java中的货币字段类型选择

​ 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享&#xff0c;打开手机app&#xff0c;额外获得1T空间 https:…

C++,命名空间与string类

一、命名空间基本概念 1.1 命名空间定义 namespace 命名空间名 {变量名;函数;结构体;枚举名; } 1.2 全局引入命名空间 using namespace 命名空间名; 1.3 部分引入命名空间 using namespace 命名空间名::变量名 注意&#xff1a;::表示域限定符&#xff0c;在哪个位置使用…

shell基础(三)

目录 一&#xff0c;正则表达式 1&#xff0c;基础正则 2&#xff0c;扩展正则 3&#xff0c;常见正则表达式 二&#xff0c;文件操作四剑客 1&#xff0c;grep进阶 2.egrep 3&#xff0c;find进阶 4&#xff0c;sed 5&#xff0c;awk 一&#xff0c;正则表达式 1&a…

【tkinter 专栏】进度条组件

文章目录 前言本章内容导图1. Progressbar 进度条组件2. Progressbar 组件的相关方法制作显示游戏加载进度的进度条3. 左右循环滚动的进度条通过循环滚动的进度条模拟进入游戏时的加载动画前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍(吉林大学出版社 ISB…

Linux内核学习(六)—— 中断(基于Linux 2.6内核)

一、中断 中断使得硬件得以发出通知给处理器。中断随时都可以产生&#xff0c;如键盘敲击就会触发中断&#xff0c;通知操作系统有按键按下。 不同设备对应的中断不同&#xff0c;而每个中断都通过一个唯一的数字标识。这些中断值通常被称为中断请求&#xff08;IRQ&#xff…

ZooKeeper(zk)与 Eureka 的区别及集群模式比较分析

​ 作者&#xff1a;zhaokk 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享&#xff0c;打开手机app&#xff…

【观察】戴尔科技:构建企业创新“韧性”,开辟数实融合新格局

过去几年&#xff0c;国家高度重视发展数字经济&#xff0c;将其上升为国家战略。其中&#xff0c;“十四五”规划中&#xff0c;就明确提出要推动数字经济和实体经济的深度融合&#xff0c;以数字经济赋能传统产业转型升级&#xff1b;而2023年年初正式发布的《数字中国建设整…

Coremail参与编制|《信创安全发展蓝皮书——系统安全分册(2023年)》

信创安全发展蓝皮书 近日&#xff0c;Coremail参与编制的《信创安全发展蓝皮书—系统安全分册&#xff08;2023年&#xff09;》重磅发布。 此次信创安全发展蓝皮书由工业和信息化部电子第五研究所联合大数据协同安全技术国家工程研究中心重磅共同发布。 本次蓝皮书涵盖信创系…

【工具】Windows操作系统上安装虚拟机VirtualBox

常见的虚拟机有以下几种: VirtualBox。这是一种免费开源的虚拟机软件,由德国Innotek公司开发,首先由Sun Microsystems公司出品。它可以在一台物理计算机上模拟多个客户机,每个客户机可以运行一个独立的操作系统,如Windows、Linux、OS/2 Warp、FreeBSD等。VMware Player。这…

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)。 一个新项目,后端使用 PHP 实现,前端不做路由,提供一个模板,由后端路由控制。 Route::get(pages/{name}, [\App\Http\Controllers\ResourceController::class, getResourceVersion])

Java“牵手“微店商品详情快递费用数据获取方法,微店API实现批量商品快递费用数据抓取示例

微店商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取微店商品详情数据&#xff0c;您可以通过开放平台的接口或者直接访问微店商城的网页来获取商品详情快递费用信息。以下是两种常用方法的介绍&#xff1…