【问题标题】:django admin not recognized after enabling django-social-auth backends启用 django-social-auth 后端后无法识别 django 管理员
【发布时间】: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


【解决方案1】:

你运行python manage.py createsuperuser 了吗?看起来您根本没有超级用户。您是如何登录admin 的?

【讨论】:

  • 我使用上面的命令创建了一个超级用户,我输入了用户名而不是管理员和密码。我在 myapp/admin.py 中注册了我的模型,并从 django 管理页面管理数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 2021-04-03
  • 1970-01-01
相关资源
最近更新 更多