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自定义线程类简单示例
Mar 23 Python
python验证码识别教程之滑动验证码
Jun 04 Python
python实现爬取图书封面
Jul 05 Python
Python 中的lambda函数介绍
Oct 10 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Flask缓存静态文件的具体方法
Aug 02 Python
Python filter()及reduce()函数使用方法解析
Sep 05 Python
Django框架请求生命周期实现原理
Nov 13 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 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中使用接口实现工厂设计模式的代码
2012/06/17 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
js获取url参数的使用扩展实例
2007/12/29 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
python中树与树的表示知识点总结
2019/09/14 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Django REST 异常处理详解
2020/07/15 Python
python绘图模块之利用turtle画图
2021/02/12 Python
python在协程中增加任务实例操作
2021/02/28 Python
蛋白质世界:Protein World
2017/11/23 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
大学生专科毕业生自我评价
2013/11/17 职场文书
大专生简历的自我评价
2013/11/26 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
社团活动总结模板
2014/06/30 职场文书
绿色校园广播稿
2014/10/13 职场文书
污水处理保证书
2015/05/09 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python