我使用mongoengine(v0.9)作为Python 3.4运行的Django(v1.8)项目的映射器。
虽然我已将以下代码添加到settings.py文件中,但当用户尝试使用django默认管理进程连接到admin时,仍然会收到此错误。
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
异常类型:AttributeError
异常值:'MetaDict'对象没有属性'pk'
异常位置:c:\ Programs \ Python34 \ lib \ site-packages \ django \ contrib \ auth__init __。py in login,line 111
Python可执行文件:c:\ Programs \ Python34 \ python.exe
Python版本:3.4.2
P.S:我也尝试通过编写URL模式,模板和视图来自定义登录过程,但在调用“login()”函数时会出现同样的错误。
答案 0 :(得分:1)
我有同样的问题,你们有。我创建了一个新的github项目来解决我的问题。您可以通过转到https://github.com/robintiwari/django-me下载或修改它或提取代码供您自己使用。如果您对如何使用它有任何疑问,请与我们联系。我还有一个关于配置的示例项目。具体而言,您应该在此代码https://github.com/robintiwari/django-me/blob/master/djangome/mongo_auth/middlewares.py
上找到答案答案 1 :(得分:0)
此文件中的更改 C:\程序\ Python34 \ lib中\站点包\ django的\的contrib \ auth__init __吡啶
try:
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
except Exception:
request.session[SESSION_KEY] = user.id