Python social-auth-app-django 'social' не является зарегистрированным пространством имен - PullRequest
0 голосов
/ 08 ноября 2018

Я работаю над проектом с Python (3.6) и Django (2.0), в котором я пытаюсь интегрировать социальный вход в систему с помощью пакета social-auth-app-django.

Управление пользователями в приложении users.

Вот мои конфигурации:

Из 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',
)

От пользователей / 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<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[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"

Из login.html:

<div class="col-lg-12 center-aligned">
<div style="margin: auto">
    <div class="or-seperator"><b>or</b></div>
         <div class="social-btn text-center">
               <a href="{% url 'social:begin' 'facebook-oauth2' %}" class="btn btn-primary btn-lg" title="Facebook"><i class="fa fa-facebook"></i></a>
               <a href="{% url 'social_django.urls.url' %}" class="btn btn-info btn-lg" title="LinkedIn"><i class="fa fa-linkedin"></i></a>
               <a href="{% url 'social:begin' 'google-oauth2' %}" class="btn btn-danger btn-lg" title="Google"><i class="fa fa-google"></i></a>
        </div>
    </div>
</div>

Когда я загружаю шаблон login, он возвращает ошибку как:

Тип исключения: NoReverseMatch

Значение исключения:
'social' не является зарегистрированным пространством имен

1 Ответ

0 голосов
/ 08 ноября 2018

Согласно документам

urlpatterns = patterns('',
    ...
    url('', include('social_django.urls', namespace='social'))
    ...
)

и более важно:

SOCIAL_AUTH_URL_NAMESPACE = 'social'

пока у вас есть

SOCIAL_AUTH_URL_NAMESPACE = "users:social"

Также учтите, что SOCIAL_AUTH_URL_NAMESPACE должно быть записано в settings.py, а не в urls.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...