【Django】第一课 银行账户管理系统开发

news2025/2/4 1:08:13

概念

django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构。

项目的搭建

1.打开pycharm开发软件,打开开发软件的内置dos窗口操作命令行

在这里指定项目存放的磁盘路径,并使用创建django项目的指令创建当前项目,这里项目中使用django-admin startproject KCSJProject 创建了一个项目名为 KCSJProject的django服务器项目。

当回车时,只要编辑窗口未显示报错信息,则说明当前项目创建成功,在选择pycharm开发软件的左上角file》open找到打开刚刚创建的项目进行加载出来即可。

2.加载显示当前项目后,再一次进入内置dos窗口,在当前项目中创建子项目,创建子项目的指令如下:python manage.py startapp AccountSystem,执行以上指令,则在当前项目中创建了 AccountSystem子项目

将当前子项目名称添加至主项目的setting.py文件中进行管理

3.在 AccountSystem中创建templates文件夹目录,用于存放创建的html模板页面

在templates文件夹中new》html file,定义index.html作为当前子项目的首页,其代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首 页</title>
    <style type="text/css">
        input{
            width: 100px;
            padding: 10px;
            border-width: 0px;
            border-radius: 10px;
            color: white;
        }
        input.btn_add{
            background-color: cornflowerblue;
        }
        input.btn_sel{
            background-color: coral;
        }
        input.btn_add:hover{
            background-color:#3D69ED ;
        }
        input.btn_sel:hover{
            background-color: #FF5A20;
        }
    </style>
    <script type="text/javascript">
        //定义方法,用于用户点击查询账户按钮,触发该方法
        //去调用Accounts/地址
        function btn_sel() {
            location.href="Accounts/"
        }

        //定义方法,用于用户点击开通账户按钮,触发该方法
        //去调用add/地址
        function btn_add() {
            location.href="add/"
        }
    </script>
</head>
<body>
    <div align="center" >
        <h1>银行账户管理系统</h1>
        <div>
            <input type="button" class="btn_add" onclick="btn_add()" value="开通账户">
            <input type="button" class="btn_sel" onclick="btn_sel()" value="查询账户">
        </div>
    </div>
</body>
</html>

 3.在主项目中的urls.py文件中,定义浏览器默认访问地址

表示当开启django服务器后,进入django服务器根路径即可匹配当前浏览器地址,并立即执行子项目中的views.py文件中定义的index方法,其代码如下

 

表示跳转打开指定的index.html页面显示在浏览器上,接着再次打开内置的dos窗口,输入python manage.py runserver指令开启django服务器,

当显示当前网址时,即为django服务器根路径地址,我们可以选择任意浏览器进行访问该网址,即可看到我们自己制作的首页界面的显示

 

 

Sqlite数据库的搭建以及表的创建

接着我们需要打开子项目中的models.py文件,在该文件中创建与数据表产生对象关系型映射的python类,其代码如下:

from django.db import models

# Create your models here.
# 创建银行账户类,用于做数据库迁移生成数据库银行账户表
# 将Account继承至models
class Account(models.Model):
    #密码  设置该字段类型为varchar类型,最大长度为20,不允许为空
    password=models.CharField(max_length=20,blank=False)
    # 姓名  设置该字段类型为varchar类型,最大长度为20,不允许为空
    name=models.CharField(max_length=20,blank=False)
    # 身份证号  设置该字段类型为varchar类型,最大长度为20,不允许为空
    personId=models.CharField(max_length=20,blank=False)
    # 余额,设置该字段类型为float类型,表示可以存储带有小数的数字,不允许为空
    blance=models.FloatField(blank=False)
    # 开户日期,设置该字段类型为varchar类型,表示可以存储年月日的日期,不允许为空
    openDate=models.CharField(max_length=20,blank=False)

 该类需要通过python manage.py makemigrations指令的执行,将models.py文件中定义的模型类生成迁移文件,因此我们再次打开内置的dos窗口,执行以上指令

当迁移文件生成成功后,则在该文件夹中可看到迁移后的文件代码的生成

 

通过以上代码可以观察出,我们所编写的属性字段都以转换成迁移文件,但是我们并没有编写id这个属性的代码,那是因为django服务器会自动判断开发者在创建表的时候是否编写主键,如果未存在主键的定义,则会自动创建 

再执行python manage.py migrate指令,将迁移文件转换成数据库表

当执行成功后,我们在项目目录中可观察到该数据库的存在

接着我们将pycharm开发软件的右侧栏的database打开,将该数据库拖动至其中即可查看该数据库中所转换生成的所有数据库表的结构以及数据

 

那么我们双击该表,即可打开,查看其表的字段结构,并可以手动往表中添加自己想要的模拟数据

 

这里也可以通过点击DDL功能,进行手动编写SQL语句进行快速执行数据库的执行代码,这里读者可自行操作验证。 

 

开通账户功能实现

接着我们通过给首页的开通账户按钮添加点击事件,触发JavaScript方法访问设定的地址,完成跳转打开添加账户信息页面

 

即浏览器则会请求访问http://127.0.0.1:8000/地址中的add/地址,该请求又会进过urls.py文件进行匹配,因此我们需要在urls.py文件中定义匹配的地址,并在views.py文件中定义对应执行的方法


 

 

接着我们需要在templates中创建添加账户页面的html,其代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>开通账户页面</title>
    <style type="text/css">
        table{
            border-width: 0px;
            background-color: cadetblue;
            padding: 10px;
            width: 340px;
            text-align: center;
            border-radius: 10px;
        }
        td{
            padding: 8px;
        }
        input{
            padding: 5px;
        }
        input.btn_sub{
            width: 100px;
            padding: 10px;
            border-width: 0px;
            border-radius: 10px;
            color: white;
            background-color: cornflowerblue;
        }
        input.btn_sub:hover{
            background-color:#3D69ED ;
        }
    </style>
</head>
<body>
    <div align="center">
        <h3>新增账户界面</h3>
        <!--http://127.0.0.1:8000/addData/ -->
        <form action="/addData/" method="post">
            {% csrf_token %}
            <table>
                <tr>
                    <td>姓名:</td>
                    <td><input type="text" name="name" placeholder="请输入姓名"></td>
                </tr>
                <tr>
                    <td>密码:</td>
                    <td><input type="password" name="password" placeholder="请输入密码"></td>
                </tr>
                <tr>
                    <td>身份证号:</td>
                    <td><input type="text" name="personId" placeholder="请输入身份证号码"></td>
                </tr>
                <tr>
                    <td>余额:</td>
                    <td><input type="text" name="blance" placeholder="请输入余额"></td>
                </tr>
                <tr>
                    <td>开户日期:</td>
                    <td><input type="date" name="openDate" placeholder="请输入开户日期"></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" class="btn_sub" value="开通新账户"></td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>

 其运行后的页面效果如下

当用户在该页面填写完新账户的用户信息后,即通过表单的提交,将数据信息发送给表单的action属性中所定义的服务器地址,那么我们需要在urls.py文件中定义接收数据的地址进行匹配,并把接收的数据进行转发给views.py文件的方法进行获取

 

views.py

# 创建方法,用于接收添加账户页面发送过来过来的数据
def addData(request):
    name=request.POST["name"]
    password=request.POST["password"]
    personId=request.POST["personId"]
    blance=request.POST["blance"]
    openDate=request.POST["openDate"]
    # 将接收的数据添加至Account账户表的数据库
    Account.objects.create(name=name,password=password,personId=personId,blance=blance,openDate=openDate)
    # 如果新账户添加成功后,跳转回首页,供用户选择其他功能
    return redirect(index)

 通过代码的描述,将接收的新用户的数据信息添加至账户表后,通过重定向地址,让浏览器返回至首页上,供用户进行选择其他执行功能操作。

 

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

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

相关文章

算法刷题日志——dp

文章目录[打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/description/)卖股票的最佳时机[买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/)[买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-bu…

RK3588平台开发系列讲解(系统篇)A/B System的介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、简介二、配置2.1、uboot配置2.2、system bootctrl参考沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍RK3588平台的A/B System。 一、简介 A/B System指的是存在两套可以正常工作的系统,分别存…

项目实战!!! 在docker上部署Jenkins

需求&#xff1a;通过docker安装jenkins&#xff0c;并且通过Jenkins部署项目&#xff0c;最终效果是只要在jenkins对某个项目点击构建&#xff0c;jenkins就会去gitLab上拉取最新项目的最新代码&#xff0c;然后根据你自己项目的pom.xml文件&#xff0c;把项目打包成jar&#…

选择机器视觉传感器时要注意什么

在上篇文章中小编讲解了机器视觉传感器在测量中有哪些优势&#xff0c;看些看过文章的朋友有了个大概的了解&#xff0c;但是当我们在要使用机器视觉传感器时&#xff0c;一定要会正确的选择&#xff0c;这样才能保证产品在实际运用当中可以准确的检测出产品是否存在问题&#…

什么是框架?Java开发中常用的框架有哪些?

什么是框架 “框架&#xff08;Framework&#xff09;"一词最早出现在建筑领域&#xff0c;指的是在建造房屋前期构建的建筑骨架。在编程领域&#xff0c;框架就是应用程序的骨架&#xff0c;开发人员可以在这个骨架上加入自己的东西&#xff0c;搭建出符合自己需求的应用…

51单片机双轴太阳能追光追日系统ULN2003步进电机

实践制作DIY- GC0097-双轴太阳能追光追日系统 一、功能说明&#xff1a; 基于51单片机设计-双轴太阳能追光追日系统 功能介绍&#xff1a; STC15W48S4系列最小系统板2个ULN2003步进电机LCD1602显示器18650锂电池锂电池充电板4个光敏电阻太阳能充电 1.双轴XY追日&#xff0c…

这波无感升级有点秀——天翼云QEMU组件热升级方案来了

虚拟化技术作为云计算时代的核心技术&#xff0c;近年来应用越来越广泛。目前&#xff0c;大多数云厂商提供的云主机都是基于KVM/QEMU虚拟化技术实现的。而随着虚拟化技术的发展&#xff0c;QEMU组件也在不断引入新功能并进行功能优化和问题修复。 在公有云场景中&#xff0c;…

【解决方案】艾美捷脂肪生成测定试剂盒的功能和应用

肥胖在世界范围内日益受到关注&#xff0c;在美国已达到流行程度。1它是困扰我们社会的许多主要慢性疾病的危险因素&#xff0c;包括心血管疾病、糖尿病和癌症。近年来&#xff0c;许多研究集中于确定肥胖的发病机制&#xff0c;这是一个增加脂肪细胞数量&#xff08;脂肪细胞增…

游戏开发 dictionary 源码解析

Dictionary是我们经常使用的&#xff0c;一起来看看它是如何构造的&#xff0c;及有哪些优缺点。 Dictionary是一种键值对的形式存放数据&#xff0c;即 key值 、value 值 一 一映射的。key的类型没有限制&#xff0c;可以是整数、字符串甚至是实例对象。 Dictionary的实现原…

Java项目:springboot+vue大学生健康档案管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 大学生健康档案管理系统&#xff0c;目前演示数据中主要包括三种角色&#xff1a;管理员、医生、学生&#xff1b;其中管理员包含最高权限&…

Metal每日分享,自然饱和度滤镜效果

本案例的目的是理解如何用Metal实现自然饱和度效果滤镜&#xff0c;简单讲就是调整图像整体的明亮程度&#xff0c;如调节到较高数值&#xff0c;图像会产生色彩过饱和从而引起图像失真&#xff1b; Demo HarbethDemo地址iDay每日分享文档地址 实操代码 // 自然饱和度滤镜 l…

攻防世界get_post

攻防世界get_post 题目描述&#xff1a;X老师告诉小宁同学HTTP通常使用两种请求方法&#xff0c;你知道是哪两种吗&#xff1f; 查看界面&#xff0c;要求用GET方式提交一个名为a,值为1的变量。 打开burp suite。 设置浏览器本地代理。 抓包。 发送到重发器。 用GET方式提交一个…

点击化学试剂一种环炔烃DBCO-PEG-N3及同系列产品

中文名称&#xff1a;氮杂二苯并环辛炔-聚乙二醇-叠氮 英文名称&#xff1a;DBCO-PEG-N3 英文别名&#xff1a; Dibenzocycolctyne-PEG-Azide 产品纯度&#xff1a; ≥95% 产品用途&#xff1a; 应用于医学研究&#xff0c;药物释放&#xff0c;纳米技术和新材料研究&am…

代码复现之:RCNN(1)分类任务构建 + 模型训练

文章目录资源链接复现开始环境安装创建 conda 虚拟环境&#xff0c;python 3.6 版本安装程序运行环境1. mkdoc 相关的环境2. 程序运行需要的环境流程参考数据集创建分类任务1. 加载原数据集 VOC20072. 将所有类数据单独提取3. 对于每个 class 的数据&#xff0c;构造正负例样本…

AVL树详解

1.AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。 因此&#xff0c;两位俄罗斯的数学家发明了一种解决上述问题的方法&#xff1a; 当向二叉…

内网穿透软件对比——cpolar : 花生壳(下)

系列文章 内网穿透软件对比——cpolar : 花生壳&#xff08;上&#xff09;内网穿透软件对比——cpolar : 花生壳&#xff08;中&#xff09;内网穿透软件对比——cpolar : 花生壳&#xff08;下&#xff09; 文章目录系列文章1. 前言2. 对比内容2.1.TCP协议功能及操作对比2.1…

【JavaEE】多线程(二)Thread 类及常见方法

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaEE】 ✈️✈️本篇内容:Thread类再剖析&#xff01; &#x1f680;&#x1f680;代码存放仓库gitee&#xff1a;JavaEE初阶代码存放&#xff01; ⛵⛵作者简…

对记录做横向分栏

【问题】 Hi i have a single list of employees. Each employee will have his name and salary. i have given the list of employees to a table but it appears as follows Employee Name Salary harish 3000 kiran 4000 Emili 6000 h…

Jenkins(2)— 配置webhook触发器

1、webhook介绍 Gitee WebHook触发器 的功能是帮助用户 push 代码后&#xff0c;自动回调一个您设定的 http 地址。例如我们可以通过添加webhook触发器来实现这样一个功能&#xff1a; 每当开发push代码到提测分支后&#xff0c;自动触发jenkins构建&#xff0c;运行自动化测…

闲暇之际敲敲代码,记录Leetcode刷题03

文章目录前言一、删除链表中的节点1.1 问题描述1.2 思路分析二、反转链表2.1 问题描述2.2 思路分析前言 利用闲暇之际敲敲代码&#xff0c;提升编程技能及提高算法能力。 一、删除链表中的节点 1.1 问题描述 有一个单链表的 head&#xff0c;我们想删除它其中的一个节点 no…