Python(3.6.7)和Django(2.1),试图集成社交-auth-app-django。
与this post不同,我已经声明了SOCIAL_AUTH_URL_NAMESPACE,但它不起作用。
配置:
settings.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 onlyurls.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'))
]login.html
<a href="{% url "social:begin" "google-oauth2" %}">Google+</a>返回的错误是:
NoReverseMatch在/accounts/登录/ “‘social”不是已注册的命名空间
那么,如何注册这个命名空间,或者问题在其他地方吗?
发布于 2018-11-30 19:34:53
与您可能认为的order相反,导入您的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",
]试着把那些定制的放在底部,告诉我它是否仍然存在。
如您所见,在您发布的链接上,自定义应用程序称为最后一个应用程序,因此它们可以使用auth和admin。
https://stackoverflow.com/questions/53563766
复制相似问题