JavaScript Null不会转换为None


@parser_classes([MultiPartParser, FormParser])
@api_view(['POST', ])
def product_list(request):
print(request.POST.get('key'))
print(request.data.get('key'))
print(request.FILES)

当我发送值为key=null的表单数据时,它将null显示为字符串,但没有转换为None。我应该怎么做有点像

if request.data.get('key', None) in ['null', None]:
#then do something

但这似乎不是一种干净的方式。那么我该怎么办呢?

我预计django或django-rest框架会自动将null转换为None。

HTTP表单数据内容中没有null/noe这回事(事实上,没有我们通常理解的类型这回事,尽管每个项目都可能有一个内容类型(。

因此,在javascript端,null被转换为字符串,添加到数据中,发送到服务器,而服务器只得到一个null字符串,而没有更多信息。

一般来说;空";项目将完全丢失,或者,它们将有一个与之相关联的空值。

不管怎样,这都不是django的问题。

我设计了一个中间件来解决这个问题。我不知道它是否好,但它对我有效。我先让它可变,然后改变它,再让它变为不可变。

注意:如果发送的数据是嵌套的json,则必须对其进行更改以递归处理json

from django import http
from django.utils.deprecation import MiddlewareMixin

class NullStringToNoneMiddleware(MiddlewareMixin):
"""Responsible for converting all string null values to None"""
def process_request(self, request):
request.POST._mutable = True
for j in request.POST:
if request.POST[j] == 'null':
request.POST[j] = None
request.POST._mutable = False

最新更新