一、具体要求
- 建立数据表FinancingProduct,创建主键,添加测试数据(至少4条)
- 使用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对输入项进行非空验证,日期格式和风险评级的验证,如图
二 制作思路
- 先创建django项目文件
- 在sql数据库中创建相应的数据库
- 配置setting.py
- 在models.py写入模块,后执行shell语句在数据库中创建相应的表,并添加至少4条数据
- templates中创建首页面和新增页面的html
- 在urls.py中写入跳转路径和调用views.py中的方法
- 在views.py中写入要求的方法
- 在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>产品代码 </td>
<td>风险评级 </td>
<td>预期收益 </td>
<td>发售起始日 </td>
<td>发售截止日 </td>
<td>产品到期日 </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'))
]