要从用户模型中获取用户名,您应该使用 request.user。这将为您提供经过身份验证的用户的请求信息。但是,如果您使用 simple_jwt,则无法在中间件中直接使用 request.user,因为身份验证机制在视图功能中起作用。
因此,您应该在中间件中手动进行身份验证,然后您可以使用 request.user 从用户模型中获取任何数据。
from rest_framework_simplejwt import authentication
class MyMiddleware():
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_view(self, request, view_func, view_args, view_kwargs):
request.user = authentication.JWTAuthentication().authenticate(request)[0] # Manually authenticate the token
print(request.user) # Use the request.user as you want