django自定义中间件--------登录验证中间件
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
以下是一个简单的示例,展示了如何创建一个Django中间件来验证用户是否已经登录:
在你的Django应用中,创建一个新的Python模块,例如middleware.py
,并定义如下中间件:
from django.shortcuts import redirect
class LoginRequiredMiddleware:
def __init__(self, get_response):
self.get_response = get_response
self.login_url = '/accounts/login/' # 默认登录URL,可以根据需要修改
def __call__(self, request):
response = self.get_response(request)
return response
def process_view(self, request, view_func, view_args, view_kwargs):
if getattr(view_func, 'login_exempt', False):
return None
if request.user.is_authenticated:
return None
else:
return redirect(self.login_url)
然后,在你的settings.py
文件中添加这个中间件:
MIDDLEWARE = [
# ... 其他中间件 ...
'path.to.your.middleware.LoginRequiredMiddleware', # 确保替换为你的中间件的实际路径
]
现在,这个中间件会在每个视图函数被调用之前检查用户是否已经登录。如果用户未登录,则会重定向到指定的登录URL。如果你不希望某个视图函数执行这个检查,可以在视图函数上设置@login_required
装饰器或设置login_exempt
属性为True
。
评论已关闭