2012-05-23 13 views
7

¿Puedo utilizar la página de inicio de sesión disponible en: /admin para que los usuarios que no sean del personal inicien sesión? Estoy usando los siguientes ajustes en mi archivo de configuración de Django:¿Podemos usar la página de inicio de sesión en/admin en django para nuestro propio uso?

LOGIN_URL = '/admin/' 
LOGIN_REDIRECT_URL = '/' 

Cuando me conecto, no me vuelven a dirigir a la carpeta raíz. ¿Lo estoy haciendo de la manera correcta?

Nota: Estoy usando el decorador @login_required en mi opinión.

Editar

Me inicia sesión en el sitio de administración con esta URL: http://127.0.0.1:8000/admin/?next=/

Respuesta

10

miembros distintos del personal no pueden iniciar sesión a través de la vista de administración, por lo que no puede.

Hay una vista de Django que hace exactamente lo que necesita, sin embargo: django.contrib.auth.views.login

Usted puede agregar fácilmente a su urlconf:

from django.contrib.auth.views import login 

urlpatterns = ('', 
    #snip 
    url(r'^login/$', login) 
) 

Consulte la documentación para ver cómo se puede personalizar su comportamiento : https://docs.djangoproject.com/en/dev/topics/auth/#limiting-access-to-logged-in-users

Solo necesitará definir una plantilla para que la vista la use, de manera predeterminada, debe estar ubicada en registration/login.html, pero puede anularse.

7

Con Django 1.6 pude utilizar la propia plantilla de inicio de sesión de admin de django con la siguiente configuración. Luego, cuando abro '/' me va a redirigir a la pantalla de inicio de sesión, y después de entrar en ella me envía de nuevo a '/'

settings.py

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'core', 
    'south', 
) 

LOGIN_URL = '/login' 

urls.py

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from django.contrib.auth.views import login 

admin.autodiscover() 
urlpatterns = patterns(
    '', 
    url(r'^', include('core.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^login/$', login, {'template_name': 'admin/login.html'}) 
    # I didn't create this 'admin/login.html' template 
    # Django will use the one from the admin application ;-) 
) 

núcleo/urls.py

from django.conf.urls import patterns, url 
urlpatterns = patterns(
    'core.views.web_views', 
    url(r'^$', 'home'), 
) 

núcleo/views/web_views.py

from django.shortcuts import render_to_response 
from django.template.context import RequestContext 

__author__ = 'tony' 

from django.contrib.auth.decorators import login_required 

@login_required 
def home(request): 
    return render_to_response('home.html', {}, context_instance = RequestContext(request)) 
Cuestiones relacionadas