本篇内容介绍了“怎么用python+Element实现模板Temp操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
<div id="app">
<div class="col-md-10 col-md-offset-1">
<div class="container-fluid mb0 " >
<div class="row">
<div class="col-md-4">
<form class="form-horizontal">
<div class="form-group clearfix ">
<label class="col-sm-4 control-label bk-lh40 pt0">选择业务:</label>
<div class="col-sm-8">
<el-select v-model="searchBiz" placeholder="请选择业务名称" >
<el-option v-for="item in bkBizData" :label="item.bk_biz_name" :value="item.bk_biz_id"></el-option>
</el-select>
</div>
</div>
</form>
</div>
<div class="col-md-4">
<form class="form-horizontal">
<div class="form-group clearfix ">
<label class="col-sm-4 control-label bk-lh40 pt0">模板名称:</label>
<div class="col-sm-8">
<el-input v-model="searchTempName" placeholder="请输入模板名称" ></el-input>
</div>
</div>
</form>
</div>
<div class="col-md-4">
<form class="form-horizontal">
<div class="form-group clearfix ">
<div class="col-sm-8">
<el-button type="primary" @click="getSearch">搜索</el-button>
<el-button type="warning" @click="exportTemp">导出</el-button>
<el-button type="success" @click="addDialog = true">添加模板</el-button>
</div>
</div>
</form>
</div>
</div>
</div>
<el-table :data="tempData" border >
<el-table-column prop="bk_biz_id" label="业务ID"></el-table-column>
<el-table-column prop="bk_biz_name" label="业务名称"></el-table-column>
<el-table-column prop="temp_name" label="模板名称"></el-table-column>
<el-table-column prop="script" label="模板脚本"></el-table-column>
<el-table-column prop="threshold" label="阀值"></el-table-column>
<el-table-column prop="create_time" label="添加时间"></el-table-column>
<el-table-column prop="note" label="备注"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="editTempMethod(scope.row)">修改</el-button>
<el-button type="danger" size="small" @click="deleteTempMethod(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 新增的对话框 -->
<el-dialog title="新增巡检模板" :visible.sync="addDialog" width="40%">
<el-form ref='addForm' :model='addForm' label-width="80px">
<el-form-item label="选择业务" prop="bk_biz_name">
<el-select v-model="addForm.add_bk_biz" placeholder="请输入业务名称" class="modal1" >
<el-option v-for="item in bkBizData" :value="item.bk_biz_id +':'+item.bk_biz_name" :label="item.bk_biz_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="模板名称" prop="temp_name">
<el-input v-model="addForm.add_temp_name" placeholder="请输入模板名称" class="modal1"></el-input>
</el-form-item>
<el-form-item label="巡检脚本" prop="script">
<el-input v-model="addForm.add_temp_script" type="textarea" placeholder="请输入巡检脚本" class="modal1"></el-input>
</el-form-item>
<el-form-item label="模板阀值" prop="value">
<el-input v-model="addForm.add_temp_value" placeholder="请输入模板阀值" class="modal1"></el-input>
</el-form-item>
<el-form-item label="模板备注" prop="note">
<el-input v-model="addForm.add_temp_note" type="textarea" placeholder="请输入备注" class="modal1"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addDialogOk">立即创建</el-button>
<el-button @click="addDialog = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
<el-dialog title="修改巡检模板" :visible.sync="editDialog" width="40%">
<el-form ref='editForm' :model='editForm' label-width="80px">
<el-form-item label="选择业务" prop="bk_biz_name">
<el-select v-model="editForm.edit_bk_biz" placeholder="请输入业务名称" class="modal1" >
<el-option v-for="item in bkBizData" :value="item.bk_biz_id +':'+item.bk_biz_name" :label="item.bk_biz_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="模板名称" prop="temp_name">
<el-input v-model="editForm.edit_temp_name" placeholder="请输入模板名称" class="modal1"></el-input>
</el-form-item>
<el-form-item label="巡检脚本" prop="script">
<el-input v-model="editForm.edit_temp_script" type="textarea" placeholder="请输入巡检脚本" class="modal1"></el-input>
</el-form-item>
<el-form-item label="模板阀值" prop="value">
<el-input v-model="editForm.edit_temp_value" placeholder="请输入模板阀值" class="modal1"></el-input>
</el-form-item>
<el-form-item label="模板备注" prop="note">
<el-input v-model="editForm.edit_temp_note" type="textarea" placeholder="请输入备注" class="modal1"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="editDialogOk">立即创建</el-button>
<el-button @click="editDialog = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</div>
<script type="text/javascript">
new Vue({
el: '#app',
data: {
bkBizData: [],
tempData: [],
searchBiz:'',
searchTempName:'',
editDialog:false,
addDialog:false,
addForm: {
add_bk_biz: '',
add_temp_name: '',
add_temp_script: '',
add_temp_value: '',
add_temp_note: ''
},
editForm: {
pk:'',
edit_bk_biz: '',
edit_temp_name: '',
edit_temp_script: '',
edit_temp_value: '',
edit_temp_note: ''
}
},
mounted() {
// 页面加载就获取所有模板
this.init()
},
methods: {
init() {
axios.get(site_url + "get_biz_list/").then(res => {
if (res.data.result){
this.bkBizData = res.data.data;
}else{
this.$message.error('获取业务失败');
}
},'json');
axios.get(site_url + "temp_view/").then(res => {
if (res.data.result){
this.tempData = res.data.data;
}else{
this.$message.error('获取模板失败');
}
},'json');
},
getSearch() {
axios.get(site_url + "temp_view/?search_biz_id=" + this.searchBiz + "&query_str=" + this.searchTempName).then(res => {
if (res.data.result){
this.tempData = res.data.data;
}else{
this.$message.error('获取模板失败');
}
},'json');
},
addDialogOk() {
axios.post(site_url + "temp_view/", this.addForm).then(res => {
if (res.data.result) {
this.$message.success('添加模板成功');
this.addDialog = false;
this.init();
this.addForm = {
add_bk_biz: '',
add_temp_name: '',
add_temp_script: '',
add_temp_value: '',
add_temp_note: ''
}
} else {
this.$message.error('添加模板失败');
}
}, 'json');
},
editTempMethod(row) {
this.editForm.edit_bk_biz = row.bk_biz_name;
this.editForm.edit_temp_name = row.temp_name;
this.editForm.edit_temp_script = row.script;
this.editForm.edit_temp_value = row.threshold;
this.editForm.edit_temp_note = row.note;
this.editForm.pk = row.pk;
this.editDialog = true;
},
deleteTempMethod(row) {
this.$confirm('正在删除模板, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
axios.delete('/temp_view/',{data:{id:row.pk}}).then(res => {
if (res.data.result) {
this.$message.success('删除模板成功');
this.init();
} else {
this.$message.error('删除模板失败');
}
}, 'json');
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
editDialogOk() {
axios.put(site_url + "temp_view/", this.editForm).then(res => {
if (res.data.result) {
this.$message.success('更新模板成功');
this.editDialog = false;
this.init();
} else {
this.$message.error('更新模板失败');
}
}, 'json');
},
exportTemp() {
location.href = site_url + 'export_temp/'
}
}
})
</script>
urls.py
文件内容
from django.conf.urls import patterns
from home_application.temp import views as temp_view
urlpatterns = patterns(
'home_application.views',
(r'^temp/$', 'temp'),
(r'^temp_view/$', temp_view.TemplateView.as_view()),
(r'^get_biz_list/$', 'get_biz_list'),
(r'^export_temp/$', temp_view.export_temp),
...
)
temp\views.py
文件内容
import json
import xlwt
from django.views.generic import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
from django.http import JsonResponse, HttpResponse
from django.db.models import Q
from home_application.models import Template
class CsrfExemptView(View):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(CsrfExemptView, self).dispatch(request, *args, **kwargs)
class TemplateView(CsrfExemptView):
def get(self, request, *args, **kwargs):
search_biz_id = request.GET.get("search_biz_id")
query_str = request.GET.get("query_str")
try:
temp_query = Template.objects.all()
except Exception:
return JsonResponse({"result": False})
if search_biz_id:
temp_query = temp_query.filter(bk_biz_id=search_biz_id)
if query_str:
temp_query = temp_query.filter(
Q(temp_name__icontains=query_str) | Q(script__contains=query_str) | Q(note__contains=query_str)
)
res_data = [i.to_dict() for i in temp_query]
return JsonResponse({"result": True, "data": res_data})
def post(self, request, *args, **kwargs):
data = json.loads(request.body)
temp_obj = {
"bk_biz_id": data.get("add_bk_biz").split(":")[0],
"bk_biz_name": data.get("add_bk_biz").split(":")[1],
"temp_name": data.get("add_temp_name"),
"note": data.get("add_temp_note"),
"threshold": data.get("add_temp_value"),
"script": data.get("add_temp_script"),
}
try:
Template.objects.create(**temp_obj)
return JsonResponse({"result": True})
except Exception:
return JsonResponse({"result": False})
def put(self, request, *args, **kwargs):
data = json.loads(request.body)
pk = data.get("pk")
bk_biz_id = data.get("edit_bk_biz").split(":")[0]
bk_biz_name = data.get("edit_bk_biz").split(":")[1]
temp_name = data.get("edit_temp_name")
script = data.get("edit_temp_script")
threshold = data.get("edit_temp_value")
note = data.get("edit_temp_note")
temp_obj = {
"bk_biz_id": bk_biz_id,
"bk_biz_name": bk_biz_name,
"temp_name": temp_name,
"script": script,
"threshold": threshold,
"note": note,
}
try:
Template.objects.filter(pk=pk).update(**temp_obj)
return JsonResponse({"result": True})
except Exception as e:
print(e)
return JsonResponse({"result": False})
def delete(self, request, *args, **kwargs):
data = json.loads(request.body)
pk = data.get("id")
try:
Template.objects.filter(pk=pk).delete()
return JsonResponse({"result": True})
except Exception:
return JsonResponse({"result": False})
def generate_temp():
f = xlwt.Workbook()
# 添加一个Sheet,名字为 sheet_name 所传的参数
sheet1 = f.add_sheet("Sheet1", cell_overwrite_ok=True)
title = [u"模板ID", u"业务ID", u"业务名称", u"模板名称", u"巡检脚本", u"阀值", u"备注", u"创建时间"]
# 写文件头
for i in range(0, len(title)):
# i 表示第一行的第 i 列
sheet1.write(0, i, title[i])
temp_query = Template.objects.all()
temp_list = [i.to_dict() for i in temp_query]
# 从第二行开始写入数据
for i in range(0, len(temp_list)):
# 向每一行的第1列写入数据
sheet1.write(i + 1, 0, temp_list[i].get("pk"))
sheet1.write(i + 1, 1, temp_list[i].get("bk_biz_id"))
# 向每一行的第2列写入数据
sheet1.write(i + 1, 2, temp_list[i].get("bk_biz_name"))
sheet1.write(i + 1, 3, temp_list[i].get("temp_name"))
sheet1.write(i + 1, 4, temp_list[i].get("script"))
sheet1.write(i + 1, 5, temp_list[i].get("threshold"))
sheet1.write(i + 1, 6, temp_list[i].get("note"))
sheet1.write(i + 1, 7, temp_list[i].get("create_time"))
f.save('模板.xls')
def export_temp(request):
generate_temp()
file = open('模板.xls', 'rb')
response = HttpResponse(file)
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="模板.xls"'
return response
models.py
文件内容
from django.db import models
from home_application.utils.parse_time import parse_datetime_to_timestr
class Template(models.Model):
bk_biz_id = models.CharField(u"业务ID", max_length=8, blank=True, null=True)
bk_biz_name = models.CharField(u"业务名称", max_length=32, blank=True, null=True)
temp_name = models.CharField(u"模板名称", max_length=32, blank=True, null=True)
script = models.TextField(u"巡检脚本", max_length=2048, blank=True, null=True)
threshold = models.CharField(u"阀值", max_length=32, blank=True, null=True)
note = models.CharField(u"备注", max_length=256, blank=True, null=True)
create_time = models.DateTimeField(u"创建时间", auto_now_add=True)
def to_dict(self):
return {
"pk": self.pk,
"bk_biz_id": self.bk_biz_id,
"bk_biz_name": self.bk_biz_name,
"temp_name": self.temp_name,
"script": self.script,
"threshold": self.threshold,
"note": self.note,
"create_time": parse_datetime_to_timestr(self.create_time),
}
实现效果
“怎么用python+Element实现模板Temp操作”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/renpingsheng/blog/3119300