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))
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Django中,可以通过编写一个视图函数来接收POST请求保存数据。 首先,需要在urls.py文件中设置URL路径,并将其映射到视图函数。例如: ```python from django.urls import path from .views import save_data urlpatterns = [ path('save/', save_data, name='save_data'), ] ``` 接下来,在views.py文件中编写save_data函数,用于处理保存POST数据的逻辑。可以使用request对象的POST属性来访问提交的数据。例如,如果表单中有一个名为"username"的输入字段,可以通过request.POST['username']来获取该字段的值。然后,可以使用模型类来创建一个新的对象,并将POST数据保存数据库中。 ```python from django.shortcuts import render from .models import MyModel def save_data(request): if request.method == 'POST': username = request.POST['username'] # 将POST数据保存数据库 MyModel.objects.create(username=username) return render(request, 'success.html') else: return render(request, 'form.html') ``` 在这个例子中,我们假设有一个名为MyModel的模型类,其中包含一个名为"username"的CharField字段。当我们通过POST请求发送一个表单时,我们将从request.POST获取"username"字段的值,并使用MyModel.objects.create()方法创建一个新的MyModel对象,并将其保存数据库中。接下来,可以渲染一个成功页面,或者返回一个表单页面让用户继续输入。 最后,需要为save_data视图函数创建一个相关的模板文件,例如form.html和success.html,用于展示相应的界面。 希望这个回答能够帮助到你! ### 回答2: Django是一个使用Python语言编写的高级Web开发框架,其中的视图函数(views)负责接收请求并返回响应。对于接收POST请求保存数据的情况,可以按照以下步骤进行处理。 1. 在Django项目中创建一个视图函数来处理POST请求保存数据。可以在项目的某个app中的views.py文件中定义该函数。例如: ``` from django.shortcuts import render from .models import YourModel def save_data(request): if request.method == 'POST': # 获取POST请求中的数据 data = request.POST.get('data', '') # 创建一个新的数据对象并保存 your_model = YourModel(data=data) your_model.save() # 返回保存成功的消息给用户 return render(request, 'success.html') else: # 返回一个空的表单页面给用户,用于提交数据 return render(request, 'form.html') ``` 2. 在视图函数中,首先判断请求的方法是否为POST,因为只有POST请求才会携带数据。通过`request.POST.get('data', '')`方法可以获取名为"data"的POST数据。如果有其他字段需要获取,可以类似地进行处理。 3. 创建一个数据对象,并将获取到的数据赋值给对象的相应属性。然后调用对象的`save()`方法进行保存。 4. 最后,根据保存结果返回一个相应的页面给用户,通常会有一个保存成功的提示页面和一个用于提交数据的表单页面。 需要注意的是,在保存数据之前需要先在models.py文件中定义好数据模型(YourModel)的结构,以便于正确地保存数据。 以上便是使用Django接收POST请求保存数据的简单实现。根据具体需求,可以在视图函数中添加更多的逻辑来处理数据。 ### 回答3: 在Django中,可以通过编写视图函数来接收POST请求保存数据。下面是一个示例: 首先,在项目中的urls.py文件中设置一个路由,将该路由指向视图函数。 ```python from django.urls import path from . import views urlpatterns = [ path('save-data/', views.save_data, name='save_data'), ] ``` 然后,在views.py文件中编写对应的视图函数: ```python from django.shortcuts import render from django.http import HttpResponse def save_data(request): if request.method == 'POST': # 从POST请求获取数据 data = request.POST.get('data') # 执行保存数据的操作,比如将数据存入数据库 # ... return HttpResponse('数据保存成功') else: return HttpResponse('只允许POST请求') ``` 在上述示例中,save_data()函数用于处理/save-data/路径下的POST请求。首先通过request.method属性判断请求方法是否为POST,然后使用request.POST.get()方法获取POST请求中名为"data"的数据。接下来可以执行保存数据的操作,此处可以使用Django自带的models模块,将数据存入数据库中。 最后,根据业务需求返回相应的响应,这里使用HttpResponse类返回成功或失败的信息。 总结起来,通过编写视图函数来接收POST请求保存数据,可以实现在Django中实现数据接收和存储功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值