基于 django RestFramework ,加工或者修改 request.POST 的数据内容

背景:

经常,我们希望在 django的viewset视图函数 中对request中的数据进行一定的添加或修改,然后才将数据传到 serializer中去。

例如,根据前端的token 提取出某用户的个人信息,再将个人信息和表单数据一起提交到serializer,serializer.save() 保存到数据库中,记录下添加该条数据 的用户。

问题点:

但是django 机制中的 request 是不允许被修改的

解决方案:

1、data = request.POST.copy()

复制request body数据 到 data 中,对data进行修改

def create(self, request, *args, **kwargs):
    print(request.POST)
    data = request.POST.copy()
    data[‘test‘] =11111
    print(data)
    return Response(‘’)

#输出
<QueryDict: {‘from postman‘: [‘1‘]}>
<QueryDict: {‘from postman‘: [‘1‘], ‘test‘: [11111]}>

2、request.POST._mutable =True

修改该字典的mutable属性值

def create(self, request, *args, **kwargs):
        print(request.POST)
        request.POST._mutable = True
        request.POST[‘test‘]=11111
        print(request.POST)
        request.POST._mutable = False
        request.POST[‘test2‘]=22222
        return Response(‘‘)    

# 输出
<QueryDict: {}>
<QueryDict: {‘test‘: [11111]}>
......
AttributeError: This QueryDict instance is immutable

tips:

相同的方法也可以用于request.GET  或者 request.data

原文地址:https://www.cnblogs.com/lingoDeCNblo/p/10947851.html

时间: 2024-10-11 01:00:43

基于 django RestFramework ,加工或者修改 request.POST 的数据内容的相关文章

基于Django RESTframework设计Restful API

导语 ? 关于RESTful的问题,在最近的面试中遇到很多,之前有过一定的了解,但没有系统性的总结分析.所以现在结合Django RESTframework来加深对RESTful的理解,同时梳理这过程的一些知识点. 什么是RESTful? ?这个问题是最容易想到的,首先要分析这个问题,网上的其他文章都会讲到有关REST(Representational State Transfer),中文翻译:"表述性状态传递",再白话一点就是对资源的表述性状态传递.刚开始,看到这里头都大了,那我们来

python 3.5 django 笔记(六)修改博客标题与内容

接下来,要把博客继续完善 画个画儿先~~ ~~~~~~ ~~~~~~ 主页点击修改文章----修改文章页面 主页点击新文章----新文章页面 新文章提交后----主页 修改文章提交后----修改文章 ~~~~~~ ~~~~~~ 敲代码咯 编辑edit_page.html页面 <body> <form action="{% url 'blog:edit_action' %}" method="post"> {% csrf_token %} &l

django restframework 初识

简介 从后台开发的角度来说,不借助restframework框架一样可以用django来写接口.但是有了restframework之后,我们用restframework会更加方便,因为这个框架帮我们做了很多事,使用这个框架来开发接口会更加便捷.restframework里面大致实现了以下功能: 权限 认证 访问评率限制 序列化 路由 视图 分页 渲染器 解析器 版本 CBV和FBV 首先django不存在CBV和FBV哪种方式更好的说法,它们的本质都是一样的,写在路由里都是对应一个函数,CBV的

基于django channel 实现websocket的聊天室

websocket ? 网易聊天室? ? web微信? ? 直播? 假如你工作以后,你的老板让你来开发一个内部的微信程序,你需要怎么办?我们先来分析一下里面的技术难点 消息的实时性? 实现群聊 现在有这样一个需求,老板给到你了,关乎你是否能转正?你要怎么做? 我们先说消息的实时性,按照我们目前的想法是我需要用http协议来做,那么http协议怎么来做那? 是不是要一直去访问我们的服务器,问服务器有没有人给我发消息,有没有人给我发消息?那么大家认为我多长时间去访问一次服务比较合适那? 1分钟1次?

一个初学者的辛酸路程-基于Django写BBS项目

前言 基于Django的学习 详情 登录界面 找个模板 http://v3.bootcss.com/examples/signin/ 右键,检查源码 函数 def login(request): errors = {} if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user =

在IIS上部署基于django WEB框架的python网站应用

django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上. 笔者的运行环境: Window xp sp3 IIS 5.1 Python 2.7.2 (http://www.python.org/) pywin32-217.win32-py2.7   (python的win32扩展) Django-1.3.1  (https://www.djangoproject.com/) isapi_wsgi-0.4.2-py2.

django restframework serializer 增加自定义字段

在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段.有两种方法实现这个目的. 假设现在有一个Animal模型,其中有name, type, country字段,country为外键.我们在序列化Animal时,需要额外增加外键country的area信息. 方法一: 1.首先,在django的model中定义property class Animal(models

基于Django快速开发可定制的办公系统实战(1):Git的使用

基于Django快速开发可定制的办公系统实战(1):Git的使用 ?为什么在项目的开篇要介绍下git的使用呢?俗话说:"工欲善其事,必先利其器",git工具就是项目开发的必备利器,尤其是在多人协作开发环境中.使用git工具可实现分布式的版本控制,可在服务端和本地创建一个版本库. ?脑图是本文的"脊椎",了解个大概后,再通读本文,再加上实际的操作,效果会更好,那我们就开始吧! 1 Git工具安装 Windows版本安装: 安装包下载地址:https://gitforw

基于Django的在线考试系统

概述 基于Django的在线考试系统,适配电脑端,可以实现出题,答题,排行榜,倒计时等等等功能 详细 代码下载:http://www.demodashi.com/demo/13923.html 项目目录结构: account为扩展的Django用户模块 analysis为用户答题分析模块 api为接口路由 business为机构配置信息模块 competition为比赛核心模块 config为配置文件目录 utlis为python脚本工具 web为前端代码目录 checkcodestyle.sh