【问题标题】:Django auth error when using mongoengine使用 mongoengine 时出现 Django 身份验证错误
【发布时间】:2015-04-22 08:58:32
【问题描述】:

我正在使用 mongoengine (v0.9) 作为由 Python 3.4 运行的 Django (v1.8) 项目的映射器。

虽然我在 settings.py 文件中添加了以下代码,但当用户尝试使用 django 默认管理进程连接到管理员时,我仍然收到此错误)

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mongoengine.django.mongo_auth',
    'myapp',
)

AUTHENTICATION_BACKENDS = ('mongoengine.django.auth.MongoEngineBackend',)

SESSION_ENGINE = 'mongoengine.django.sessions'

connect('mymongodb')

/admin/login/ 处的 AttributeError

“MetaDict”对象没有属性“pk”

请求方法:POST

请求网址:http://myapp.dev:8000/admin/login/

Django 版本:1.8

异常类型:属性错误

异常值:“MetaDict”对象没有属性“pk”

异常位置:c:\Programs\Python34\lib\site-packages\django\contrib\auth__init__.py 登录,第 111 行

Python 可执行文件:c:\Programs\Python34\python.exe

Python 版本:3.4.2

P.S:我也尝试过通过编写 URL 模式、模板和视图来自定义登录过程,但在调用“login()”函数时会出现同样的错误。

【问题讨论】:

  • 你有没有找到解决办法。我也有同样的错误
  • @himanshudua 不幸的是还没有。我现在写了一个临时的用户管理器类。一旦找到任何解决方案,我将更新我的代码和这个问题。
  • @himanshudua 找到解决方案了吗?

标签: python django python-3.x mongoengine


【解决方案1】:

我遇到了和你们一样的问题。我创建了一个新的 github 项目来解决我的问题。您可以前往https://github.com/robintiwari/django-me 下载或修改或提取代码供自己使用。如果您对如何使用它有任何疑问,请告诉我。我还有一个关于配置的示例项目。具体来说,您应该在此代码上找到答案https://github.com/robintiwari/django-me/blob/master/djangome/mongo_auth/middlewares.py

【讨论】:

    【解决方案2】:

    此文件中的更改 c:\Programs\Python34\lib\site-packages\django\contrib\auth__init__.py

    try:
       request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
    except Exception:
       request.session[SESSION_KEY] = user.id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 2021-05-24
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      相关资源
      最近更新 更多