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使用xlrd读取Excel格式文件的方法
Mar 10 Python
Python3 replace()函数使用方法
Mar 19 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
python Kmeans算法原理深入解析
Aug 23 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 Python
django中media媒体路径设置的步骤
Nov 15 Python
基于python实现破解滑动验证码过程解析
May 28 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 Python
详解Django中 render() 函数的使用方法
Apr 22 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php探针不显示内存解决方法
2019/09/17 PHP
斜45度寻路实现函数
2009/08/20 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
python迭代器实例简析
2014/09/25 Python
Python os模块学习笔记
2015/06/21 Python
Python中操作符重载用法分析
2016/04/29 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
python获取代理IP的实例分享
2018/05/07 Python
python实现的发邮件功能示例
2019/09/11 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
演讲比赛获奖感言
2014/02/02 职场文书
《忆江南》教学反思
2014/04/07 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
作风大整顿心得体会
2014/09/10 职场文书
2014年财政所工作总结
2014/11/22 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
服务员岗位职责
2015/02/03 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js