首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python social-auth-app-django 'social‘不是已注册的命名空间

Python social-auth-app-django 'social‘不是已注册的命名空间
EN

Stack Overflow用户
提问于 2018-11-08 12:56:29
回答 2查看 4.9K关注 0票数 0

我正在使用Python3.6和Django(2.0)开发一个项目,在这个项目中,我试图通过使用social-auth-app-django包来集成社交登录。

管理users应用程序中的用户。

以下是我的配置:

:settings.py:

代码语言:javascript
复制
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的

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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”不是已注册的命名空间

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-08 15:01:43

根据文档

代码语言:javascript
复制
urlpatterns = patterns('',
    ...
    url('', include('social_django.urls', namespace='social'))
    ...
)

更重要的是:

代码语言:javascript
复制
SOCIAL_AUTH_URL_NAMESPACE = 'social'

当你有

代码语言:javascript
复制
SOCIAL_AUTH_URL_NAMESPACE = "users:social"

还请考虑SOCIAL_AUTH_URL_NAMESPACE必须用settings.py而不是urls.py编写。

票数 3
EN

Stack Overflow用户

发布于 2019-08-22 04:19:03

url(r'^auth/', include('social_django.urls', namespace='social')),

您应该在myproject_root/urls.py而不是myapp/urls.py中导入

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53208212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档