gpt4 book ai didi

python - Social-auth-app-django 'social' 不是注册的命名空间

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:17 28 4
gpt4 key购买 nike

Python(3.6.7) 和 Django(2.1),尝试集成social-auth-app-django。

this post不同,我已声明SOCIAL_AUTH_URL_NAMESPACE,但它不起作用。

配置:

设置.py:

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Application definition

INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"Microlly",
"social_django",
]

AUTHENTICATION_BACKENDS = [
'social_core.backends.github.GithubOAuth2',
'social_core.backends.google.GoogleOAuth2',
'django.contrib.auth.backends.ModelBackend',
]

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"
]

ROOT_URLCONF = "microblogging.urls"

TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [],
"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",
"social_django.context_processors.login_redirect",
]
},
}
]

WSGI_APPLICATION = "microblogging.wsgi.application"

SOCIAL_AUTH_URL_NAMESPACE = 'social'
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY="SECRET"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET="SECRET"

SOCIAL_AUTH__KEY="ID"
SOCIAL_AUTH__SECRET="SECRET"

# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"
},
{"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"},
{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
]

STATIC_ROOT = os.path.join(BASE_DIR, "static")

LOGIN_REDIRECT_URL = "/accounts/"

EMAIL_BACKEND = (
"django.core.mail.backends.console.EmailBackend"
) # During development only

urls.py:

from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.urls import include, path, reverse_lazy

from Microlly import views

app_name = "Microlly"


urlpatterns = [
path("", views.index, name="index"),
path("accounts/", include("django.contrib.auth.urls")),
url('^api/v1/', include("social_django.urls", namespace='social'))
]

登录.html

<a href="{% url "social:begin" "google-oauth2" %}">Google+</a>

返回的错误是:

NoReverseMatch at /accounts/login/
'social' is not a registered namespace

那么,我如何注册这个命名空间,或者问题出在其他地方吗?

最佳答案

与您可能认为的顺序相反,您在 django 中导入 django 应用程序非常重要,这可能是一个问题其中您的应用程序正在使用 contrib.auth 但它在实例化之前调用它的某些部分。

INSTALLED_APPS = [
"Microlly", <-------------move down
"social_django", <--------------move down
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]

尝试将那些自定义的放在底部,然后告诉我它是否仍然存在。

如您所见,在您发布的链接上,自定义应用程序被称为最后一个,因此它们可以使用身份验证和管理

关于python - Social-auth-app-django 'social' 不是注册的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53563766/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com