有多种方法可以实现:
使用Django自带的用户认证
from django.contrib.auth.decorators import login_required
@login_required
def homepage(request):
pass
这样子使用即可。
使用middleware
class CustomAuthMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
if request.path.startswith('/no-auth'):
return None
if request.path.startswith('/need-auth'):
return redirect('/no-auth/login/')
然后把自定义的middleware添加到settings.py中的MIDDLEWARE_CLASSES最后。
更加*的,使用自己的修饰器来写。
def user_required(func):
@functools.wraps(func)
def first_wrapped(*args, **kwargs):
auth_user_done_by_yourself(*args, **kwargs) # 自定义认证方式
return func(*args, **kwargs)
return first_wrapped