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解析html开发库pyquery使用方法
Feb 07 Python
python函数装饰器用法实例详解
Jun 04 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
django自带的server 让外网主机访问方法
May 14 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
Python拼接字符串的7种方法总结
Nov 01 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
Python编写万花尺图案实例
Jan 03 Python
python小型的音频操作库mp3Play
Apr 24 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 高手之路(二)
2006/10/09 PHP
我的论坛源代码(十)
2006/10/09 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
java必学必会之static关键字
2015/12/03 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
js变量提升深入理解
2016/09/16 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python操作日期和时间的方法
2014/03/11 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Django实现跨域请求过程详解
2019/07/25 Python
centos7之Python3.74安装教程
2019/08/15 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
资料员岗位职责
2013/11/17 职场文书
三问三解心得体会
2014/09/05 职场文书
交通事故案件代理词
2015/05/23 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers