Estoy trabajando en un proyecto con Python (3.6) y Django (2.0) en el que estoy tratando de integrar el inicio de sesión social-auth-app-django
utilizando social-auth-app-django
paquete social-auth-app-django
.
Gestionando usuarios en la aplicación de users
.
Aquí están mis configuraciones:
Desde settings.py:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'users', 'phone_field', 'social_django', ] 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', 'social_django.middleware.SocialAuthExceptionMiddleware', ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR, 'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'social_django.context_processors.backends', # <- Here 'social_django.context_processors.login_redirect', ], }, }, ] LOGIN_URL = 'users/login/' AUTHENTICATION_BACKENDS = ( 'social_core.backends.open_id.OpenIdAuth', # for Google authentication 'social_core.backends.google.GoogleOpenId', # for Google authentication 'social_core.backends.google.GoogleOAuth2', # for Google authentication 'social_core.backends.linkedin.LinkedinOAuth2', # for Github authentication 'social_core.backends.facebook.FacebookOAuth2', # for Facebook authentication 'django.contrib.auth.backends.ModelBackend', )
De los usuarios / urls.py:
app_name = 'users' urlpatterns = [ path('signup/', views.SignUpView.as_view(), name='signup'), path('login/', views.LoginView.as_view(), name='login'), path('logout/', views.LogoutView.as_view(), name='logout'), url(r'^activate/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', views.activate, name='activate'), url(r'^auth/', include('social_django.urls', namespace='social')), ] SOCIAL_AUTH_URL_NAMESPACE = "users:social"
Desde login.html:
or
Cuando cargo la plantilla de login
, devuelve un error como:
Tipo de excepción: NoReverseMatch
Valor de excepción:
‘social’ no es un espacio de nombres registrado
Segun los docs
urlpatterns = patterns('', ... url('', include('social_django.urls', namespace='social')) ... )
y más importante:
SOCIAL_AUTH_URL_NAMESPACE = 'social'
mientras tienes
SOCIAL_AUTH_URL_NAMESPACE = "users:social"
También considere que SOCIAL_AUTH_URL_NAMESPACE debe estar escrito en settings.py
, no en urls.py