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编程时利用wxPython来支持多线程的方法
Apr 07 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
win10安装python3.6的常见问题
Jul 01 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
Django利用AJAX技术实现博文实时搜索
May 06 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实现的json类实例
2015/07/28 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
完美的中文自荐信
2014/05/24 职场文书
服务行业演讲稿
2014/09/02 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
事业单位考察材料范文
2014/12/25 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android
基于redis+lua进行限流的方法
2022/07/23 Redis