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 自动补全(vim)
Nov 30 Python
Python魔术方法详解
Feb 14 Python
详解Python中的strftime()方法的使用
May 22 Python
Python变量和字符串详解
Apr 29 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
python-xpath获取html文档的部分内容
Mar 06 Python
Python读写压缩文件的方法
Jul 30 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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
php微信开发之关注事件
2018/06/14 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
js微信支付实现代码
2016/12/22 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
详解python进行mp3格式判断
2016/12/23 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
有个性的自我评价范文
2013/11/15 职场文书
农村婚礼证婚词
2014/01/08 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
安全标语大全
2014/06/10 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
计算机实训心得体会
2016/01/14 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers