【发布时间】:2016-08-29 05:34:44
【问题描述】:
我在我的项目中使用 django-social-auth 使用 facebook 登录,但是即使从 facebook 注销后我也无法登录 django 管理页面。
我以为我忘记了密码并试图从 shell got 中更改它:
>>> from django.contrib.auth.models import User
>>> User.objects.filter(is_superuser=True)
<QuerySet []>
这是我的 setting.py 文件:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'social.apps.django_app.default',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'portfolio',
]
AUTHENTICATION_BACKENDS = (
# For Facebook Authentication
'social.backends.facebook.FacebookOAuth2',
# Default Django Auth Backends
'django.contrib.auth.backends.ModelBackend',
)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
# Setting of Template Context Processors for Social Auth
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
models.py:
from django.db import models
class Personal(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
email = models.EmailField()
phone = models.CharField(max_length=100)
status = models.CharField(max_length=100)
cover = models.CharField(max_length=100)
我有一个 form.py 文件:
from django import forms
from django.forms import ModelForm
from . import models as m
class PersoForm(ModelForm):
class Meta:
model = m.Personal
fields = ['name', 'status', 'address', 'email', 'phone', 'cover']
我知道我可以创建一个新的超级用户,但我想了解为什么会这样以及如何同时使用 django-admin 和 django-social-auth?
我很欣赏这里的一些澄清,我是 django 框架的新手。
【问题讨论】:
-
您设置了
AUTH_USER_MODEL吗?User.objects.all()是否返回管理员用户? -
如果您没有自定义用户模型,那么我怀疑您的管理员用户确实存在
-
@MosesKoledoye
AUTH_USER_MODEL未设置,User.objects.all()仅显示 facebook 用户。我现在正在阅读它。 -
即使我一直从 localhost:8000/admin 登录/退出它并且在使用 django-social-auth 之前它正在工作?
-
一些我会考虑调试的疯狂猜测 - 也许您的 shell 与您的项目不在同一个环境中? IE。您的项目在 virtualenv1 中,您在 virtualenv2 或全局环境中打开了 shell?可能是您切换了数据库(使用 sqlite 非常简单)?你确定你没有用你自己的一个覆盖默认用户模型吗?或许给我们看看
portfolio/models.py的内容?
标签: python django django-admin