Django小项目--理财产品信息管理系统

一、具体要求

  1. 建立数据表FinancingProduct,创建主键,添加测试数据(至少4条)
  2. 使用Django命令创建web项目FinancingProductSys,生成相应的项目文件目录

         

      3.在models.py文件上面创建实体类FinancingProduct

         a.参考FinancingProduct表编写属性

         b.编写各属性的__str__/__unicode__方法

       4.在views.py文件上面创建各种方法(这个第678三个步骤的概括):

          a.编写查询方法,查询理财信息

          b.编写查询方法,根据产品代码查询理财信息记录数,以判断产品代码是否重复

          c.编写增加方法,实现添加理财功能

        5.在urls.py文件上:

          a.添加查询方法路由处理路径,调用views.py文件上面的相关处理函数类,查询理财信息

          b.添加查询方法路由处理路径,调用views.py文件上面的相关处理函数类,判断产品代码是否重复

          c.添加增加方法路由处理路径,调用views.py文件上面的相关处理函数类,实现添加理财功能

        6.在views.py上创建查询理财信息的处理函数

          a.获取查询条件信息(查询全部理财信息的情况不用获取)

          b.调用views上的相关类的方法查询理财信息,正确查询结果集进行分页的跳转

         7.在views.py上创建验证产品代码是否重复的ajax异步调用处理函数

           a.获取理财信息的产品代码

           b.调用views上的相关类的方法查询该产品代码是否已经存在,正确返回json格式结果集

          8.在views.py上创建添加理财的调用处理函数

           a.获取添加理财的所有信息

           b.调用views上的相关类添加理财信息,根据添加结果给出相应的提示并跳转至相关的页面

          9.创建理财信息查询html页面

           a.按照图所示进行页面设计,并使用css进行美化

             b将查询条件提交到根据条件查询理财信息的异步调用处理函数

             c.单击"新增理财信息"后打开新增理财页面,如图

              10.创建新增理财页面

                  a.按照图进行设计

                  b.使用ajax异步校验验证产品代码是否与数据库中已经存在的理财信息的产品代码重复

                  c.保存数据之前要使用jquery对输入项进行非空验证,日期格式和风险评级的验证,如图

二  制作思路

  1. 先创建django项目文件
  2. 在sql数据库中创建相应的数据库
  3. 配置setting.py
  4. 在models.py写入模块,后执行shell语句在数据库中创建相应的表,并添加至少4条数据
  5. templates中创建首页面和新增页面的html
  6. 在urls.py中写入跳转路径和调用views.py中的方法
  7. 在views.py中写入要求的方法
  8. 在html中写入ajax代码

三  代码编写

项目目录

models.py

from django.db import models

# Create your models here.
class FinancingProduct(models.Model):
    risk=models.IntegerField(null=False)
    income=models.CharField(null=False,max_length=50)
    saleStarting=models.DateTimeField(null=False)
    saleEnd=models.DateTimeField(null=False)
    end=models.DateTimeField(null=False)

views.py

from django.shortcuts import render,HttpResponse,redirect,reverse
from .models import*
# Create your views here.
def index(request):
    requestSet=None
    fxpj=request.GET.get('fxpj')
    daima=request.GET.get('daima')
    if fxpj is None and daima is None:
        requestSet=FinancingProduct.objects.all()
    elif fxpj is not None and fxpj is not "0":
        requestSet = FinancingProduct.objects.filter(risk=fxpj)
    elif daima is not None:
        requestSet = FinancingProduct.objects.filter(id=daima)
    #查询所有数据
    # requestSet=FinancingProduct.objects.all()

    return render(request,'index.html',{'rs':requestSet})

def save(request):
    if request.method=="GET":
        return render(request,'save.html')
    else:
        #数据获取
        daima=request.POST.get('daima')
        risk=request.POST.get('risk')
        income=request.POST.get('income')
        saleStarting=request.POST.get('saleStarting')
        saleEnd=request.POST.get('saleEnd')
        end=request.POST.get('end')
        #数据保存
        newfp=FinancingProduct()
        newfp.id=daima
        newfp.risk=risk
        newfp.income=income
        newfp.saleStarting=saleStarting
        newfp.saleEnd=saleEnd
        newfp.end=end
        try:
            newfp.save()
            return HttpResponse('1')
            #return redirect(reverse('pf:index'))
        except:
            return HttpResponse('0')

def checkid(request):
    daima=request.GET.get('daima')
    rset=FinancingProduct.objects.filter(id=daima)
    if len(rset)==0:
        return HttpResponse('可以使用')
    else:
        return HttpResponse('不可以使用')

/pangzi/urls.py

#usr/bin/python
#-*-coding:utf-8-*-

from django.urls import path,include
from .views import *

app_name='pf'
urlpatterns = [
    path('index',index,name="index"),
    path('save',save),
    path('checkid',checkid),
]

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">


        $(function () {
            $("#chaxun").click(function(){
               var val=$("[name='cpcode']").val();
               var fxpj=$("#fxpj").val();
               //判断代码输入框 和风险评级是否选择
               if (val==""&fxpj=="0"){
                   alert("代码 评级必须选择一个")
               }
               else {
                   //数据传到后台
                   location.href="/pangzi/index?fxpj="+fxpj+"&daima="+val;
               }
            });
        })
    </script>
</head>
<body>
<p>
    <strong>产品代码</strong><input type="text" name="cpcode">
    <strong>风险评级</strong>
    <select id="fxpj">
        <option value="0">请选择</option>
        <option value="1">R1</option>
        <option value="2">R2</option>
        <option value="3">R3</option>
    </select>
    <button value="查询" id="chaxun" >查询</button>
    <a href="/pangzi/save" >新增理财信息</a>
</p>
<table>
    <tr>
        <td>产品代码&nbsp;&nbsp;</td>
        <td>风险评级&nbsp;&nbsp;</td>
        <td>预期收益&nbsp;&nbsp;</td>
        <td>发售起始日&nbsp;&nbsp;</td>
        <td>发售截止日&nbsp;&nbsp;</td>
        <td>产品到期日&nbsp;&nbsp;</td>
    </tr>
    {% for foo in rs %}
        <tr>
        <td>{{ foo.id }}</td>
        <td>
            {% if foo.risk is 1 %}
                R1
            {% elif foo.risk is 2%}
                R2
            {% else %}
                R3
            {% endif %}

        </td>
        <td>{{ foo.income }}</td>
        <td>{{ foo.saleStarting | date:'Y-m-d'}}</td>
        <td>{{ foo.saleEnd | date:'Y-m-d' }}</td>
        <td>{{ foo.end | date:'Y-m-d' }}</td>
    </tr>
    {% endfor %}

</table>
</body>
</html>

save.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        tr td:nth-of-type(3){color:red;}
    </style>
    <script src="/static/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $('[name="daima"]').blur(function(){
                var daima=$('[name="daima"]').val();
                //异步请求判断
                $.get('/pangzi/checkid','daima='+daima,function(data){
                    $("#mess").html(data);

                });
            });
            //表单验证
            $("form").submit(function(){
                var daima=$("[name='daima']").val();
                date_ymd= /^(\d{4})-(0\d{1}|1[0-2])-(0\d{1}|[12]\d{1}|3[01])$/;
                if (daima==""){
                    $("#mess").html("产品代码不能为空")
                }else if ($("[name='risk']").val()=="0"){
                    $("#riskmess").html("请选择风险评级")
                }
                else if(!date_ymd.test($("[name='saleStarting']").val())){
                    $("[name='saleStarting']").parent().next().html("时间格式不正确");
                }
                else if(!date_ymd.test($("[name='saleEnd']").val())){
                    $("[name='saleStarting']").parent().next().html("时间格式不正确");
                }
                else if(!date_ymd.test($("[name='end']").val())){
                    $("[name='saleStarting']").parent().next().html("时间格式不正确");
                }else {
                    //表单序列化  提交ajax后台
                   var ser=$("form").serialize();
                   $.post('/pangzi/save',ser,function (data) {
                       if(data=="1"){
                           alert("新增成功");
                           location.href="index";
                       }else{
                           alert("新增失败");
                       }
                   })
                }
                return false;

            })
        })
    </script>

</head>
<body>

<h1>新增理财页面</h1>
<form action="/pangzi/save" method="post">
    {% csrf_token %}
<table>
    <tr>
        <td>产品代码</td>
        <td><input type="text" name="daima"></td>
        <td id="mess"></td>
    </tr>
    <tr>
       <td>风险评级</td>
        <td><select name="risk">
            <option value="0">请选择</option>
            <option value="1">R1</option>
            <option value="2">R2</option>
            <option value="3">R3</option>
        </select></td>
       <td id="riskmess"></td>
    </tr>
    <tr>
        <td>预期收益</td>
        <td><input type="text" name="income"></td>
        <td></td>
    </tr>
    <tr>
        <td>发售起始日</td>
        <td><input type="text" name="saleStarting"></td>
        <td>yyyy-MM-dd格式</td>
    </tr>
    <tr>
         <td>发售截止日</td>
         <td><input type="text" name="saleEnd"></td>
         <td>yyyy-MM-dd格式</td>
    </tr>
    <tr>
         <td>产品到期日</td>
         <td><input type="text" name="end"></td>
        <td>yyyy-MM-dd格式</td>
    </tr>
    <tr>

         <td><input type="submit" value="提交"></td>
         <td><input type="button" value="返回"></td>

    </tr>
</table>
</form>

</body>
</html>

/xiaoxingyun/urls.py

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


urlpatterns = [
    path('admin/', admin.site.urls),
    path('pangzi/',include('pangzi.urls',namespace='pf'))
]

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要搭建一个django-vue-admin项目,你可以按照以下步骤进行操作: 1. 首先,创建一个Django项目,并安装所需的依赖。在设置文件中,确保你的TEMPLATES配置中包含了以下内容:'BACKEND': 'django.template.backends.django.DjangoTemplates'。 2. 接下来,配置Django的模板上下文处理器。在设置文件中,确保你的TEMPLATES配置中包含了以下内容:'django.contrib.auth.context_processors.auth'和'django.template.context_processors.request'。 3. 然后,安装django-vue-admin库。你可以使用pip安装它:pip install django-vue-admin。 4. 在你的Django项目中创建一个新的应用程序。你可以使用以下命令创建一个名为"admin"的应用程序:python manage.py startapp admin。 5. 在你的项目设置文件中注册新创建的应用程序。将'app名'admin'添加到你的INSTALLED_APPS配置中。 6. 在admin应用程序的目录中创建一个名为"templates"的文件夹,并在其中创建一个名为"admin"的子文件夹。 7. 在"admin"文件夹中创建一个名为"base.html"的模板文件,该文件将作为你的项目的基础模板。 8. 在"base.html"模板文件中,使用Vue.js编写前端代码,以实现你希望在项目中看到的功能和样式。 9. 在你的admin应用程序的视图中,定义需要的后端逻辑和模型操作。 10. 最后,运行你的Django服务器并访问项目的URL,以查看django-vue-admin项目的效果。 请按照以上步骤进行操作,你就可以成功地搭建一个django-vue-admin项目了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Django+Vue环境搭建](https://blog.csdn.net/WeirdoGiraffe/article/details/124863602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值