抢红包小程序

抢红包小程序 红包大战

复制代码
# 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多平台发布

相关推荐
dhxhsgrx3 小时前
PYTHON训练营DAY25
java·开发语言·python
伊织code5 小时前
PyTorch API 5 - 全分片数据并行、流水线并行、概率分布
pytorch·python·ai·api·-·5
风逸hhh6 小时前
python打卡day25@浙大疏锦行
开发语言·python
魔尔助理顾问7 小时前
Flask如何读取配置信息
python·flask·bootstrap
jc_hook8 小时前
Python 接入DeepSeek
python·大模型·deepseek
chicpopoo8 小时前
Python打卡DAY25
开发语言·python
crazyme_69 小时前
深入掌握 Python 切片操作:解锁数据处理的高效密码
开发语言·python
Code_流苏10 小时前
《Python星球日记》 第69天:生成式模型(GPT 系列)
python·gpt·深度学习·机器学习·自然语言处理·transformer·生成式模型
于壮士hoho11 小时前
Python | Dashboard制作
开发语言·python
掘金-我是哪吒11 小时前
分布式微服务系统架构第131集:fastapi-python
分布式·python·微服务·系统架构·fastapi