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自然语言编码转换模块codecs介绍
Apr 08 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
对python requests的content和text方法的区别详解
Oct 11 Python
python中正则表达式 re.findall 用法
Oct 23 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Python button选取本地图片并显示的实例
Jun 13 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
Python字符串格式化输出代码实例
Nov 22 Python
python基于opencv实现人脸识别
Jan 04 Python
Python利用folium实现地图可视化
May 23 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面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
在Python中调用ggplot的三种方法
2015/04/08 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
pandas中去除指定字符的实例
2018/05/18 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
python得到windows自启动列表的方法
2018/10/14 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
地质工程专业毕业生求职信
2014/08/08 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang
MySQL数据库查询之多表查询总结
2022/08/05 MySQL