@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