簡體   English   中英

social-auth-app-django'social'不是注冊的名稱空間

[英]social-auth-app-django 'social' is not a registered namespace

Python(3.6.7)和Django(2.1),試圖集成social-auth-app-django

這篇文章不同,我已經聲明了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 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'))
]

login.html

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

返回的錯誤是:

NoReverseMatch位於/ accounts / login /
“社交”不是注冊的名稱空間

那么, 我該如何注冊該名稱空間 ,還是其他地方出現問題?

相反,你可能會認為在你輸入你的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM