如果我使用中间件,发送的帖子数据会被捕获为空白,如果我从settings.py文件中删除中间件,则返回帖子数据。我做错了什么。
当我删除中间件时,这是正确的结果
这是中间件代码:缩进可能有误
class CheckAuthorization(object):
def process_request(self, request):
getKey = request.POST.get('authKey')
token = request.POST.get('token')
full_path = request.get_full_path()
if getKey is not None and getKey != '' and full_path != "/users/splash/":
try:
auth = TblAutherization.objects.get(secret_key = request.POST.get('authKey'))
except TblAutherization.DoesNotExist:
response = JsonResponse({'Status':'Error','Response code': 107,'Message':full_path})
return HttpResponse(response, content_type='application/json')
else:
return None
if token is not None and token != '' and 'settoken' in request.session and full_path != "/users/splash/":
try:
auth = TblLoginAuth.objects.get(token = request.POST.get('token'))
except TblLoginAuth.DoesNotExist:
response = JsonResponse({'Status':'Error','Response code': 107,'Message':'Invalid Request'})
return HttpResponse(response, content_type='application/json')
else:
return None
views.py
def splash(request):
if request.method == 'POST':
try:
appId = request.POST.get('appId')
except:
return Response({'Status':appId})
gcmToken = request.POST.get('gcmToken')
deviceType = request.POST.get('deviceType')
userId = request.POST.get('userId')
loginStatus = request.POST.get('loginStatus')
appType=request.POST.get('appType')
return Response({'appId':appId,'gcmToken':gcmToken,'deviceType':deviceType})
else:
return Response({'appId':appId,'gcmToken':gcmToken,'deviceType':deviceType})
除非我使用try except,否则它甚至不会进入。
process_request
看起来没问题。从截图中可以看到,json 响应有键,但值为 null。也就是说,逻辑进入了你编写这个json response
的地方。也许你应该检查一下处理/users/splash/
视图的逻辑。在返回响应之前,你可以打印一下响应。顺便问一下,这个中间件里有process_response
吗? - Han Herequest.POST
是一个MultiValueDict
实例,它是一个扩展的python dict
。get
方法不会清除键和值。也许你可以发布处理/users/splash/
的视图代码,我可以看看是否有什么问题。 - Han He