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实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
Python字符串处理函数简明总结
Apr 13 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 Python
python实现搜索文本文件内容脚本
Jun 22 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
如何在Django项目中引入静态文件
Jul 26 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 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 源代码压缩小工具
2009/12/22 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
js简单时间比较的方法
2016/08/02 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
js校验开始时间和结束时间
2020/05/26 Javascript
Python实现多线程HTTP下载器示例
2017/02/11 Python
python快排算法详解
2019/03/04 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
安全生产计划书
2014/05/04 职场文书
机关搬迁方案
2014/05/18 职场文书
计算机系本科生求职信
2014/05/31 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
委托收款证明
2015/06/23 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers