我使用Django Rest Framework和rest_auth(/login,/logout/,/register...)进行开发。
我有一个中间件,通常由user_logged_in或user_logged_out信号触发。
在我的中间件中,我想使用Rest框架的Response对象。
我的middleware.py文件如下:
from django.contrib.sessions.models import Session
from django.contrib.auth import logout
from django.contrib.auth.models import AnonymousUser
from rest_framework.response import Response
from rest_framework import status
class OneSessionPerUserMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.user.is_authenticated:
if request.user.session_key != Session.objects.filter(session_key__in = request.user.session_key):
logout(request)
return Response(request)
return self.get_response(request)
我想我已经满足了条件,但是我收到了这个错误:
The response content must be rendered before it can be accessed
如何在中间件中正确使用API响应对象?
我真的不明白self.get_response = get_response是什么意思?
return Response(request)
这一行代码。让您的视图使用return self.get_response(request)
来处理请求。无论如何,您都应该优雅地处理已注销的情况。 - dirkgroten