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爬取网站数据保存使用的方法
Nov 20 Python
python简单实现旋转图片的方法
May 30 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
python装饰器初探(推荐)
Jul 21 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
python调用webservice接口的实现
Jul 12 Python
Python Web框架之Django框架Model基础详解
Aug 16 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
Python函数式编程实例详解
Jan 17 Python
5道关于python基础 while循环练习题
Nov 27 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根据某字段对多维数组进行排序的方法
2015/03/07 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
php中数组最简单的使用方法
2020/12/27 PHP
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
python多线程http下载实现示例
2013/12/30 Python
PyMongo安装使用笔记
2015/04/27 Python
详解Django中的过滤器
2015/07/16 Python
Python 内置函数complex详解
2016/10/23 Python
python将txt文件读取为字典的示例
2018/12/22 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
Go timer如何调度
2021/06/09 Golang