Django 接收Post请求数据,并保存到数据库的实现方法
作者:豆芽胡 发布时间:2024-01-13 08:18:56
标签:Django,Post,请求,保存,数据库
要说基本操作,大家基本都会,但是有时候,有些操作使用小技巧会节省很多时间。
本篇描述的就是使用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))
来源:https://blog.csdn.net/u012605477/article/details/80733843


猜你喜欢
- http://serverName/appName/module/action/id/1/这个就是pathinfo模式在不考虑路由的情况下,
- 最近做了一个项目,其中有项目需求涉及到手机号验证码,就是当用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很
- 本文实例讲述了Python功能键的读取方法。分享给大家供大家参考。具体分析如下:先getch一下得到a,如果等于0或者224,就说明是功能键
- 本文实例讲述了CentOS7系统搭建LAMP及更新PHP版本操作。分享给大家供大家参考,具体如下:搭建LAMP环境 用yum安装安装Apac
- 最近迷上了Python,要说为什么呢?Python语法简单,功能强大,有广泛的第三方库能快速编程实现自己的想法(无需重复去造轮子)。就像某位
- 在本文中,我想向您介绍如何在Django中使用聚合,聚合的含义是“内容相关项的集合,以便它们可以显示或链接到”。在Django中,我们使用的
- 前言:由于做项目需要一个树形选择器,项目用的也是element-ui框架,然而它自带的选择器组件没有树形选项,又不想引入其他的框架组件,于是
- pandas可以对不同索引的对象进行算术运算,如果存在不同的索引对,结果的索引就是该索引对的并集。一、算术运算a、series的加法运算 &
- 根据本人的学习经验,我总结了以下十点和大家分享: 1)学好python的第一步,就是马上到www.python.org网站上下载一个pyth
- <? //很好用的PHP数据库类,三、四句代码搞定一个表的操作,无论这个表字段有多复杂。 //此类多次大量用在大型网站程序的开发上,效
- Oracle中大文本数据类型Clob 长文本类型 (MySQL中不支持,使用的是text)Blob 二进
- Vue的项目中,如果项目简单, 父子组件之间的数据传递可以使用 props 或者 $emit 等方式 进行传递但是如果是大中型项目中,很多时
- 1.引言效果图:ISBN查询工具通常用于图书管理、图书销售、图书收集和阅读等场景。以下是一些具体的应用场景:图书管理系统:ISBN查询工具可
- Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个逻辑运算符意义and双值运算符,如果左右两个条件都为真,则得到的值就为
- Python是面向对象(OOP)的语言, 而且在OOP这条路上比Java走得更彻底, 因为在Python里, 一切皆对象, 包括int, f
- 前言:数据的排序是比较常用的操作,DataFrame 的排序分为两种,一种是对索引进行排序,另一种是对值进行排序,接下来就分别介绍一下。1.
- 源码:#路飞骷髅import turtle as t#黄底帽子t.pu()t.goto(0,200)t.circle(-130,-80)t.
- 在事务的ACID特性中,原子性(A)、一致性(C)、持久性(D)由undo log和redo log实现,隔离性(I)由锁+MVCC实现un
- ubuntu18.04版本,python版本python2.7,python3.5,python3.6因为安装一些库会安装到python3.
- 本文实例为大家分享了Mysql实现通讯录的具体代码,供大家参考,具体内容如下#-*-code:utf-8-*-import pymysqld