Tengo esto en views.py
@login_required() def dadmin(request):
No había usado @login_required() en dapost y dapage
Y en url.py
url(r'^dadmin/$', dadmin, name='dadmin'), url(r'^dadmin/post/$', dapost, name='dapost'), url(r'^dadmin/page/$', dapage, name='dapage'),
Ahora quiero que cada vez que los usuarios intenten acceder a domain.com/dadmin/any... se redirija a la página de inicio de sesión. ¿Cómo puedo hacer eso? sin colocar @login_required() en dapost y dapage?
puede hacerlo mediante el uso de middleware personalizado
guarde esto como archivo custom_middleware.py
en su aplicación principal
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
y en su settings.py
edite el 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' ]
Si establece LOGIN_URL en su configuración.py:
https://docs.djangoproject.com/en/1.8/ref/settings/#login-url
todos los usuarios anónimos serán redirigidos cuando accedan a las URL con el decorador login_required() en sus vistas.
Editar: también puede crear un LoginRequiredMiddleware personalizado, con la ruta que desee.