我在views.py
中遇到了什么 @login_required()
def dadmin(request):
我没有在dapost和dapage中使用@login_required()
在url.py中
url(r'^dadmin/$', dadmin, name='dadmin'),
url(r'^dadmin/post/$', dapost, name='dapost'),
url(r'^dadmin/page/$', dapage, name='dapage'),
现在我想要的是每次用户尝试访问domain.com/dadmin/any ...它都会重定向到登录页面。我怎么做的?没有将@login_required()放在dapost和dapage中?
答案 0 :(得分:1)
您可以使用自定义中间件
来实现将此保存为主应用中的custom_middleware.py
文件
from django.shortcuts import redirect
class CheckUser(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if not request.user.is_authenticated() and \
request.path.startswith('/dadmin/'):
return redirect("/login/")
response = self.get_response(request)
return response
并在settings.py
编辑middleware
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
#custom middlewares
'app.custom_middleware.CheckUser'
]
答案 1 :(得分:0)
如果您在settings.py中设置了LOGIN_URL:
https://docs.djangoproject.com/en/1.8/ref/settings/#login-url
在访问其视图中带有login_required()装饰器的网址时,将重定向所有匿名用户。
编辑:您也可以使用您想要的路径制作自定义的LoginRequiredMiddleware。