1.后端准备

环境说明

python版本:3.6.6
Django版本:1.11.8
数据库:MariaDB 5.5.60

新建Django项目,在项目中新建app,配置好数据库

2.后端代码(基于CBV方式)

api_test/app01/models.py文件内容

from django.db import modelsfrom .utils.parse_time import parse_datetime_to_stringclass HostInfo(models.Model):hostname = models.CharField("主机名", max_length=32)ip = models.CharField("IP地址", max_length=16)status = models.CharField("主机状态", max_length=16)date = models.DateTimeField("主机添加时间", auto_now_add=True)def to_dict(self):return {"hostname": self.hostname,"id": self.pk,"ip": self.ip,"status": self.status,"when_insert": parse_datetime_to_string(self.date),}

app01/utils/parse_time.py文件内容

def parse_datetime_to_string(datetime_str, flag=True):"""把datetime时间转化成时间字符串:param datetime_str: datetime生成的时间,例子:datetime.datetime.now()或者: datetime.datetime.now() - datetime.timedelta(hours=1)       # 一个小时之前或者: datetime.datetime.now() - datetime.timedelta(days=1)        # 一天之前:return:"""# 将日期转化为字符串 datetime => string# 在数据库中定义字段信息时为:models.DateTimeField(auto_now_add=True)# 查询数据库之后,使用此方法把查询到的时间转换成可用的时间字符串# when_insert__range=(an_hour_time, now_time)# an_hour_time和 now_time 都是 datetime时间字符串,查询两个datetime时间字符串之间的数据if flag:return datetime_str.strftime('%Y-%m-%d %H:%M:%S')else:return datetime_str.strftime('%Y-%m-%d')

api_test/urls.py文件内容

from django.conf.urls import url
from django.contrib import adminfrom django.views.decorators.csrf import csrf_exempturlpatterns = [url(r'^admin/', admin.site.urls),url(r'^host/$', csrf_exempt(views.HostInfoView.as_view())),
]

api_test/app01/views.py文件内容

class HostInfoView(View):def get(self, request):res_list = []host_list = HostInfo.objects.all()for i in host_list:res_list.append(i.to_dict())return JsonResponse({"data": res_list, "result": True}, safe=False)def post(self, request):data = json.loads(request.body)res = {"result": False}id = data.get("id")hostname = data.get("hostname")ip = data.get("ip")status = data.get("status")operate = data.get("operate")if operate == "delete":try:HostInfo.objects.filter(id=id).delete()res = {"result": True}except Exception:res = {"result": False}elif operate == "create":try:HostInfo.objects.create(hostname=hostname, ip=ip, status=status)res = {"result": True}except Exception:res = {"result": False}elif operate == "edit":try:HostInfo.objects.filter(id=id).update(hostname=hostname, ip=ip, status=status)res = {"result": True}except Exception:res = {"result": False}return JsonResponse(res, safe=False)

3.前端代码

首先新建一个项目,然后引入iView插件,配置好router

npm安装iView

npm install iview --save
cnpm install iview --save

src/main.js文件内容

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import iView from 'iview';
import 'iview/dist/styles/iview.css';Vue.use(iView);Vue.config.productionTip = false
new Vue({router,render: h => h(App)
}).$mount('#app')

src/router.js文件内容

import Vue from 'vue'
import Router from 'vue-router'Vue.use(Router)export default new Router({routes: [{path: '/form1',component: () => import('./views/Form1.vue')},{path:'/',redirect:'/form1'}]
})

src/views/Form1.vue文件内容

<template><div style="padding: 32px 200px;"><h1>Form组件实践</h1><br><br><Table border :columns="tableColumns" :data="tableData"></Table><Button @click="handleOpenCreate">添加</Button><Modal :title="type === 'create' ? '新增主机':'修改主机'" v-model="openModal" @on-ok="handleOk" @on-cancel="handleCancel"><Form :model="ModelForm" :label-width="70"><FormItem label="主机名称"><Input v-model="ModelForm.hostname"/></FormItem><FormItem label="IP地址"><Input v-model="ModelForm.ip"/></FormItem><FormItem label="主机状态"><Select v-model="ModelForm.status"><Option label="processing" value="processing"/><Option label="error" value="error"/></Select></FormItem></Form></Modal></div>
</template><script>import axios from 'axios'export default {data() {return {tableData: [],openModal: false,deleteModal: false,type: 'create', // create || editeditIndex: -1,ModelForm: {id: '',hostname: '',ip: '',status: '',operate: ''},tableColumns: [{title: '主机名称',key: 'hostname'},{title: 'IP地址',key: 'ip'},{title: '主机状态',key: 'status'},{title: '最后修改时间',key: 'when_insert'},{title: '操作',render: (h, params) => {return h('div', [h('Button', {props: {type: 'primary',},on: {click: () => {this.handleOpenEdit(params.row)}}}, '修改'),h('Button', {props: {type: 'error',},style: {marginLeft: '10px'},on: {click: () => {// this.$router.push({path: '/hostperforms', query: {host_id: Number(params.row.host_id)}})this.handleDelete(params.row)}}}, '删除'),]);}}]}},mounted() {this.getData()},methods: {handleOpenEdit(row) {this.openModal = true;this.type = 'edit';this.ModelForm = row;},handleOpenCreate() {this.openModal = true;this.type = 'create';},handleCancel() {this.openModal = false;this.ModelForm = {hostname: '',ip: '',status: '',}},handleOk() {this.ModelForm.operate = this.typeaxios.post('http://127.0.0.1:8000/host/',this.ModelForm).then(res => {if (res.data.result) {this.$Message.success('请求成功');this.hostRow.status = this.ModelForm.status} else {this.$Message.error('请求失败');}})this.openModal = false;this.ModelForm = {hostname: '',ip: '',status: '',}this.getData();},getData() {axios.get('http://127.0.0.1:8000/host/').then(res => {if (res.data.result) {this.tableData = res.data.data;} else {this.$Message.error('请求失败');}})},handleDelete(row) {this.$Modal.confirm({title: '警告',content: '正在删除主机信息,是否继续?',onOk: () => {row.operate = "delete"axios.post('http://127.0.0.1:8000/host/', row).then(res => {if (res.data.result) {this.$Message.success('删除主机成功');this.getData();} else {this.$Message.error('删除主机失败');}})},onCancel: () => {this.$Message.info('取消删除');}});}}}
</script><style scoped></style>

分别运行前后端代码,浏览器打开URL:http://127.0.0.1:8080/#/form1,会在页面列出所有主机

点击某台主机主机后的修改按钮,弹出模态框,模态框的title为:修改主机

点击页面的新增按钮,弹出模态框,模态框的title为:新增主机

点击某台主机后的删除按钮,弹出对话框,提示用户正在删除主机

转载于:https://www.cnblogs.com/renpingsheng/p/11275310.html

iView学习笔记(四):Form表单操作相关推荐

  1. 在php中表单传值怎么用,PHP学习笔记 01 之表单传值

    一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...

  2. HTML/CSS学习笔记02【表单标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  3. 跟杨春娟学SpringMVC笔记:Form表单之JSR303验证

    跟杨春娟学SpringMVC笔记:Form表单之JSR303验证 完成:第一遍 1.如何使用JSR303验证要先导入validation-api和hibernate-validator的依赖jar包? ...

  4. 跟杨春娟学SpringMVC笔记:Form表单之Spring验证框架

    跟杨春娟学SpringMVC笔记:Form表单之Spring验证框架 完成:第一遍 1.Spring框架验证和JSR303验证的不同之处在哪里? 不同一:Spirng框架验证需要实现Validator ...

  5. html表单中默认选中的值,前端学习笔记一一HTML表单标签(form)

    form表单细节 一.表单 1.表单 标签用于为用户输入创建 HTML 表单 2.表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. 3.表单还可以包含 menus.text ...

  6. 前端学习--Ajax(2) form表单

    一.form表单 组成:表单标签.表单域(采集信息).表单按钮(提交) 1.1 <form>的属性 action -- 向何处发送表单数据 如果不写默认是当前页面url target -- ...

  7. redux-form的学习笔记二--实现表单的同步验证

    (注:这篇博客参考自redux-form的官方英文文档)左转http://redux-form.com/6.5.0/examples/syncValidation/ 在这篇博客里,我将用redux-f ...

  8. django ajax form表单,Django学习系列之Form表单和ajax(示例代码)

    昵       称: 生       日: 性       别:     男 女 地       址: 手  机  号: 邮       箱: [修改] {% csrf_token %}$(\'#js ...

  9. reac笔记_13 form表单元素中 input/defaultValue + useState/useRef

    目录 原生html元素 input属性 示例1 示例2 react中 受控组件与非受控组件 属性 error - input标签value属性使用 示例 - useState 示例 - input标签 ...

  10. TP6框架--EasyAdmin学习笔记:Excel表单导入数据库

    这是我写的学习EasyAdmin的第四章,这一章我给大家分享下Excel表单导入数据库的全流程需要怎么处理并提供案例 首先给大家看下这个功能的原理,下面是PHP连接打印机的代码 public func ...

最新文章

  1. 偷懒日志 - 自动生成代码 - 第二步 生成POJO
  2. 本周值得读的15篇AI论文,还有源码搭配服用
  3. 云原生中间件与开源自建TCO对比
  4. ios项目icon和default图片命名规则
  5. DOM节点创建(jQuery)
  6. Python萌新笔记
  7. 漫画:为什么程序员没有女友?
  8. 容器编排技术 -- Kubernetes 组件
  9. Forms(The Definitive Guild to Django)
  10. JDK安装以及配置环境变量详细步骤
  11. Quartz CronTrigger最完整配置说明
  12. 自制计算机考试系统,用WPS表格制作考试系统 -电脑资料
  13. WIN7无法卸载掉中文繁体注音输入法
  14. 栅栏密码加密/解密【传统型】在线工具
  15. 打造圣诞节H5游戏最强音
  16. jarvis oj typo
  17. 互联网寒冬,那些不怕失业的程序员们,都有什么技能?
  18. MATLAB使用基本操作
  19. linux卡住重启_linux df -h 命令卡住 解决方法
  20. 2020秋招 C++软件开发/游戏开发 面试知识整理汇总

热门文章

  1. tp3.2设置php文件编码,thinkphp3.2版本url访问:总是走默认文件默认方法
  2. java 加载shellcode_MSF-Shellcode生成和使用
  3. 我的世界服务器显示outofmemory,游戏中out of memory解决办法分享
  4. visual odometry andmultiple view setting
  5. 安装LabelMe出现ERROR: No matching distribution found for labelme解决方式(关闭网络代理+使用清华源)
  6. oracle列传行函数,oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )
  7. oracle 查看日志组切换状态_【DB笔试面试800】在Oracle中,归档和非归档模式之间的不同点是什么?它们各自的优缺点是什么?...
  8. 期末计算机课总结100字,学期总结:学期总结100字
  9. poj 1872 A Dicey Problem (bfs+WordFinal题)
  10. Windows 8 DirectX 开发学习笔记(十六)使用Terragen生成自然环境贴图