用Django写一段前后端分离的指标预警代码,如果指标a连续3天增加或者该指标大于200,则输出一个表单,表单有两列,第一列是今日指标a的值,第二列如果指标a连续3天增加则备注“连续增加”,如果当日指标a大于200则备注“大于200”
时间: 2024-03-12 22:48:48 浏览: 21
好的,我会为您提供一个简单的前后端分离的指标预警代码,基于Django框架,如下所示:
首先,在`views.py`中编写视图函数:
```python
from django.http import JsonResponse
import pandas as pd
def index(request):
# 读取指标数据
df = pd.read_csv('指标数据.csv')
# 获取指标a的数据
a_df = df['指标a']
# 初始化连续上涨天数和预警标志
up_days = 0
warning_flag = False
# 初始化表单列表
form_list = []
# 遍历指标a的数据
for i in range(len(a_df)):
# 如果指标a连续上涨3天或者大于200,则触发预警
if a_df[i] > 200 or (i >= 2 and a_df[i] > a_df[i-1] > a_df[i-2]):
# 设置预警标志为True
warning_flag = True
# 根据预警原因设置备注
if a_df[i] > 200:
remark = '大于200'
else:
remark = '连续增加'
# 添加表单
form = {'今日指标a的值': a_df[i], '备注预警原因': remark}
form_list.append(form)
# 重置连续上涨天数
up_days = 0
else:
# 如果指标a未触发预警,则累加连续上涨天数
up_days += 1
# 如果连续上涨天数超过3天,则触发预警
if up_days >= 3:
# 设置预警标志为True
warning_flag = True
# 添加表单
form = {'今日指标a的值': a_df[i], '备注预警原因': '连续增加'}
form_list.append(form)
# 重置连续上涨天数
up_days = 0
# 如果未触发预警,则输出正常信息
if not warning_flag:
form = {'今日指标a的值': '-', '备注预警原因': '指标a未触发预警!'}
form_list.append(form)
# 将表单列表转换为Json格式
data = {'form_list': form_list}
return JsonResponse(data)
```
然后在`urls.py`中配置对应的URL路由:
```python
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
```
最后,在前端页面中使用Ajax调用接口获取预警信息并展示,如下所示:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>指标预警</title>
</head>
<body>
<h1>今日指标预警</h1>
<table>
<tr>
<th>今日指标a的值</th>
<th>备注预警原因</th>
</tr>
<tbody id="tbody"></tbody>
</table>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$.ajax({
type: "GET",
url: "/",
success: function (data) {
if (data.form_list.length > 0) {
var tbody = $('#tbody');
$.each(data.form_list, function (index, form) {
var tr = $('<tr>');
var td1 = $('<td>').html(form['今日指标a的值']);
var td2 = $('<td>').html(form['备注预警原因']);
tr.append(td1);
tr.append(td2);
tbody.append(tr);
});
}
},
error: function (data) {
alert('获取数据失败!');
}
});
});
</script>
</body>
</html>
```
在前端页面中使用Ajax调用接口`/`获取预警信息,然后生成表格展示在页面上。注意,这只是一个简单的示例,您需要根据实际情况进行修改和优化。