我想在django网络应用程序中使用中间件。但是问题是我只想在用户成功登录后才使用中间件。我在set.py文件中声明了我的自定义中间件,但是它给出了错误,因为自定义中间件是在不必要的重调用时调用的。在进行一些特定的宁静呼叫时,我该如何调用中间件。
skcheung 回答:如何在Django Web应用程序中使用中间件进行特定调用?
您可以通过以下方式检查用户在django中间件中是否处于活动状态
class StackoverflowMiddleware(object):
def __init__(self,get_response):
self.get_response=get_response
def __call__(self,request):
try:
response=self.get_response(request)
if request.user.is_authenticated:
print('Run when user Are login')
else:
print('Run when user Are not login')
except Exception as e:
self.process_exception(request,e)
return response
def process_exception(self,request,exception):
print(exception.__class__.__name__)
print(exception)
return None
您还使用MiddleWareMixin
检查用户身份验证
尝试检查网址路径。
class YourMiddleware:
def __init__(self,get_response):
self.get_response = get_response
def __call__(self,request):
response = self.get_response(request)
if hasattr(request,'path') and 'loggin-url' in request.path:
# Do smthing
return response