django for 前端_Django接受前端数据的几种方法

本文介绍了Django如何处理前端发送的字符型、数组型和字典型数据。字符型数据可通过request.GET.get获取,数组型数据用request.GET.getlist,字典型数据需先转为字符串再用JSON解析。示例包括GET请求的处理方式,如http.QueryDict和MultiValueDict的使用。
摘要由CSDN通过智能技术生成

慕虎7371278

字符型字符型的数据相对好获取,前端传递的方法如下:sendData = {
 "exporttype": exporttype,"bugids": bugids,"test": JSON.stringify({"test": "test"})};在Django的后端只要使用exporttype = request.GET.get("exporttype")就能正常的获取到这个数据了。注意: 在Python2.7中数据是unicode编码的,如果要使用,有时候需要进行转str结果示例:Excle 数组型获取数组型的数据如果使用获取字符串的数据的方法,打出的结果是None。我们要使用这个方法:bugids = request.GET.getlist("bugids[]")这样获取的数据就是数组类型。注意: 获取的数组中的元素是unicode编码的,在某些时候使用需要转编码结果示例:•传递的url[14/Jul/2016 11:00:41]"GET /testtools/exportbug/?exporttype=Excle&bugids;%5B%5D=102&bugids;%5B%5D=101&bugids;%5B%5D•获取的数据[u'102', u'101', u'100', u'99', u'98', u'97', u'96', u'95', u'94', u'93', u'92', u'91', u'90', u'89', u'88', u'87'字典型字典型数据其实可以当成字符串数据来处理,获取到对应字符串后使用JSON模块做一下格式化就行了。对于前端来说,传递字典型的数据就是传递JSON数据,所以使用的方法是:"test": JSON.stringify({"test": "test"})结果示例:{"test":"test"} 相关源码•Get方法Get方法是wsgi里面的一个方法。def GET(self):# The WSGI spec says 'QUERY_STRING' may be absent.raw_query_string = get_bytes_from_wsgi(self.environ, 'QUERY_STRING', '')return http.QueryDict(raw_query_string, encoding=self._encoding)最终返回的是一个http.QueryDict(raw_query_string, encoding=self._encoding)http的原始数据,而QueryDict继承于MultiValueDict ,所以我们直接看MultiValueDict就好了。•MultiValueDict其实源码看起来并不难。def get(self, key, default=None):"""Returns the last data value for the passed key. If key doesn't existor value is an empty list, then default is returned."""try:val = self[key]except KeyError:return defaultif val == []:return defaultreturn valdef getlist(self, key, default=None):"""Returns the list of values for the passed key. If key doesn't exist,then a default value is returned."""try:return super(MultiValueDict, self).__getitem__(key)except KeyError:if default is None:return []return defaultdef __getitem__(self, key):"""Returns the last data value for this key, or [] if it's an empty list;raises KeyError if not found."""try:list_ = super(MultiValueDict, self).__getitem__(key)except KeyError:raise MultiValueDictKeyError(repr(key))try:return list_[-1]except IndexError:return []

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值