Django 接收Post请求数据,并保存到数据库的实现方法


Posted in Python onJuly 12, 2019

要说基本操作,大家基本都会,但是有时候,有些操作使用小技巧会节省很多时间。

本篇描述的就是使用dict小技巧,保存到数据库,用来节省大家编码的工作量。

主要内容:通过for循环拿到post表单中的值并保存到一个dict中,然后通过**dict保存到数据库中。

1.用户提交了一个表单,表单内容包含csrf。

2.服务端除了表单中的csrf要过滤掉,其它的都要保存到数据库中。

3.具体看下方代码:

下面的代码分别为修改和保存,其中修改是根据ID修改的。

要注意,

1.保存前的resourcesOld和保存后再获取的resourcesNew是不一样的。

尤其是type【get_type_display()】这个方法,因为要对其进行转义显示,必须获取resourcesNew对象,不然是获取不到转义后的,值只能获取其原值。

2.其次是保存的写法,有的人喜欢用T_Resources.objects.create(id=id,name=name,age=age......),这样每次,

但是都这样写比较繁琐,所以用了下面的写法,两者结果相同,当然还有一种save的写法,这里就不再阐述了!

def resources(request):
  if request.method == 'GET':
    return render(request, 'docker/Resources.html', )
  else:
    systemDict = {}
    for key in request.POST:
      if key != 'csrfmiddlewaretoken':
        systemDict[key] = request_postData.get(key)
 
    if 'id' in request_postData:
      result = {'code': 401, 'message': '修改失败!', 'data': None}
      try:
        resourcesOld=T_Resources.objects.get(id=systemDict['id'])
        T_Resources.objects.filter(id=systemDict['id']).update(**systemDict)
        resourcesNew=T_Resources.objects.get(id=systemDict['id'])
        result['code'] = 201
        result['message'] = '修改成功'
        logInfo = "服务器IP:" + resourcesOld.ip + ","
        if resourcesOld.name != resourcesNew.name:
          logInfo += "名称:" + resourcesOld.name + "->" + resourcesNew.name + ','
        if resourcesOld.type != resourcesNew.type:
          logInfo += "类型:" + resourcesOld.get_type_display() + "->" + resourcesNew.get_type_display() + ','
        if resourcesOld.label != resourcesNew.label:
          oldLabel = list(T_Label.objects.filter(type='T_Resources', value__in=resourcesOld.label).values_list('name', flat=True))[0]
          newLabel = list(T_Label.objects.filter(type='T_Resources', value__in=resourcesNew.label).values_list('name', flat=True))[0]
          logInfo += "标签:" + oldLabel + "->" + newLabel + ','
        writeOperationLog(request, 1, '修改服务器成功,' + logInfo)
      except:
        pass
      return HttpResponse(json.dumps(result, ensure_ascii=False))
 
    else:
      result = {'code': 401, 'message': '添加失败!', 'data': None}
      try:
          id=T_Resources.objects.create(**systemDict).id
          resources=T_Resources.objects.get(id=id)
          result['code'] = 201
          result['message'] = '添加成功'
      except:
        pass
      return HttpResponse(json.dumps(result, ensure_ascii=False))

以上这篇Django 接收Post请求数据,并保存到数据库的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的几种开发工具介绍
Mar 07 Python
python中的五种异常处理机制介绍
Sep 02 Python
Python随机生成数模块random使用实例
Apr 13 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
python字符串string的内置方法实例详解
May 14 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
Python configparser模块配置文件过程解析
Mar 03 Python
python实现简单聊天室功能 可以私聊
Jul 12 #Python
pyinstaller参数介绍以及总结详解
Jul 12 #Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 #Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 #Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 #Python
Django中celery执行任务结果的保存方法
Jul 12 #Python
python hough变换检测直线的实现方法
Jul 12 #Python
You might like
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php日历制作代码分享
2014/01/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
试用php中oci8扩展
2015/06/18 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP new static 和 new self详解
2017/02/19 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python实现二分查找算法
2017/09/21 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
厨房工作人员岗位职责
2013/11/15 职场文书
公司晚会主持词
2014/03/22 职场文书
小学教师岗位职责
2015/04/02 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
python画条形图的具体代码
2022/04/20 Python