学校简单充值和查询后勤项目(Django)

学校简单充值和查询后勤项目(Django)

最终效果:
在这里插入图片描述

一些所需的代码!
注意:创建项目和创建应用要按本人照顾页面的第一章笔记进行创建
settings.py
连接数据库

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME':"test",
        'HOST':"127.0.0.1",
        'POST':"3306",
        'USER':"root",
        'PASSWORD':"123456",
    }
}

models.py

from django.db import models

# Create your models here.
class deptinfo(models.Model):
    class Meta:
        db_table="deptinfo" #描述原数据的内部类
    id=models.AutoField(primary_key=True,db_column="id")
    deptname = models.CharField(max_length=20)
    def __str__(self):#魔法函数,用于打印对象时,显示对象中的某个信息
        return self.deptname

class cardinfo(models.Model):
    class Meta:
        db_table="cardinfo"
    id=models.AutoField(primary_key=True,db_column="id")
    cardno=models.CharField(max_length=8)
    balance=models.FloatField()
    state=models.IntegerField()
    deptid=models.ForeignKey(deptinfo,on_delete=models.CASCADE,db_column="deptid")

    def __str__(self):
        return self.cardno

views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.contrib import messages
from . models import *
# 视图函数
# Create your views here.
def index(request):
    if request.method=="POST":
        cardno=request.POST.get("cardno")#cardno是文本框的name属性
        result=cardinfo.objects.filter(cardno=cardno)
        if result:
            print(result) #queryset 是返回多个对象的类似于列表的对象
            card=result[0] #card是cardinfo的对象
            print(card.balance)
            return render(request,"index.html",{"balance":card.balance,#将余额传递给页面
                                                "cardno":card.cardno, #将卡号传递给页面
                                                "info":card.deptid.deptname+"系部的卡号查询成功"})
        else:#根据卡号没有查询到任何数据
            messages.info(request,"该号不存在!")#在试图函数中存消息,在html页面中取出消息
    return render(request, "index.html")

def addbalance(request):
    #获取卡号 ,获取金额
    cardno=request.POST.get("cardno")
    amount = request.POST.get("amount")#通过get获取的数据默认是str类型
    #根据卡号获取该卡的余额
    result=cardinfo.objects.filter(cardno=cardno)
    if result:
        card=result.first()#card是cardinfo的对象
        card.balance=card.balance+int(amount)#将余额+充值的金额
        card.save()#保存到数据库
        #给用户提示,充值成功
        return render(request,"index.html",{"info2":"充值成功"})
    else:
        return render(request,"index.html",{"info2":"该卡号不存在"})
        
def app(request):
    depts=deptinfo.objects.all()
    print(depts)
    if request.method=="POST":
        cardno = request.POST.get("cardno")
        balance = request.POST.get("balance")
        deptid = request.POST.get("dept")
        #根据院部id查询该deptinfo的对象
        dept=deptinfo.objects.get(id=deptid)
        newcard=cardinfo(cardno=cardno,balance=balance,state=1,deptid=dept)
        newcard.save()
    return render(request, "application.html", {"depts": depts})

应用的urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index),#将站点的/与index相绑定
    path('addbalance', views.addbalance)
    path('app', views.app)
]

项目的urls.py

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include("Books.urls")),
]

base.html
父模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>欢迎进入襄阳职业技术学院后勤服务网</h3>
<img src="/static/img/xz1.png"/><br/>
<a href="">申请饭卡</a> | <a href="/">充值服务</a>
<hr/>
{% block content %}

{% endblock %}
</body>
</html>

index.html

{% extends "base.html" %}
{% block content %}
         <div>
            <form action="/" onsubmit="return check();"method="post">
                <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
                <p>卡号:<input type="text" name="cardno" id="cardno" value="{{ cardno }}"/></p>
                <p>余额:<input type="text" name="balance" disabled value="{{ balance }}"/> </p>
                <input type="submit" value="查询"/>
            </form>
        </div>
{#    显示xxx系部卡号查询成功#}
        <span style="color: red; font-size: 12px">{{ info }}</span>
        <div>
            <form action="/addbalance" onsubmit="return checks();" method="post">
                <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
                <input type="hidden" name="cardno" id="cardno" value="{{ cardno }}"/>
                <p>金额:<input type="text" name="amount" id="amount" /></p>
                <input type="submit" value="充值"/>
            </form>
        </div>
        {#    显示金额充值成功#}
        <span style="color: red; font-size: 12px">{{ info2 }}</span>
{#    判断消息列表中是否有消息#}
        {% if messages %}
            <script>
  {#                    从列表中循环遍历#}
                {% for msg in messages %}
{#                             借助js弹出消息#}
                    alert('{{ msg }}')
                {% endfor %}
            </script>
        {% endif %}
    <script>
        function check() {
            var cardno=document.getElementById("cardno").value
            if (cardno==""){
                alert("请输入卡号")
                return false
            }
            return true
        }
        function checks() {
            var amount=document.getElementById("amount").value
            if (amount == ""){
                alert("请输入金额")
                return false
            }
            return true
        }
    </script>
{% endblock %}

application.html

{% extends "base.html" %}
{% block content %}
    <form action="/app" onsubmit="return check()"method="post">
                <h2>襄阳职业技术学院饭卡申请</h2>
                <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
                注册卡号:<input type="text" name="cardno" id="cardno" /><br/>
                初始余额:<input type="text" name="balance" id="balance" /><br/>
                选择系别:
                <select name="dept" id="dept">
                    {% for dept in depts %}
                        <option value="{{ dept.id }}">{{ dept.deptname }}</option>
                    {% endfor %}
                </select><br/>
                <input type="submit" value="确定添加"/>
            </form>
            <script>
            function check() {
                 var cardno=document.getElementById("cardno").value
                 var balance=document.getElementById("balance").value
                 if (cardno.trim()==""||balance.trim()=="") {
                    alert("请输入卡号或余额")
                    return false
                }
                 return true
            }
            </script>
{% endblock %}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值