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实现下载指定网址所有图片的方法
Aug 08 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
python中使用while循环的实例
Aug 05 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
Python列表list常用内建函数实例小结
Oct 22 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
tensorflow常用函数API介绍
Apr 19 Python
Python的历史与优缺点整理
May 26 Python
Python列表推导式实现代码实例
Sep 09 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
global.php
2006/12/09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php教程之phpize使用方法
2014/02/12 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
vuex实现简易计数器
2016/10/27 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
详解javascript void(0)
2020/07/13 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
毕业生自荐书模版
2014/01/04 职场文书
商务邀请函范文
2014/01/14 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
房产公证书格式
2015/01/26 职场文书
党员自我评价范文2015
2015/03/03 职场文书
小学远程教育工作总结
2015/08/13 职场文书
python如何进行基准测试
2021/04/26 Python