我有点困惑它是如何工作的。我已经完成了用mongoengine替换Django默认身份验证的所有步骤,以便它使用mongodb和数据库,但我尝试制作注册页面,但无法弄清楚如何使用超级用户功能。目前我正在尝试
newuser = UserManager.create_superuser(username=request.POST['username'],
password=request.POST['password'],
email=request.POST['email'])
newuser.save()
但我一直在给我错误
TypeError at /registerSuper/
unbound method create_superuser() must be called with UserManager instance as first argument (got nothing instead)
答案 0 :(得分:2)
如果您设置AUTH_USER_MODEL
,请执行以下操作:
AUTH_USER_MODEL=('mongo_auth.MongoUser')
然后,您可以使用django返回用户模型,然后使用管理器:
from django.contrib.auth import get_user_model
user = get_user_model().objects.create_user(**user_data)
答案 1 :(得分:1)
import mongoengine INSTALLED_APPS = ( ... 'mongoengine.django.mongo_auth', ) AUTHENTICATION_BACKENDS = ( 'mongoengine.django.auth.MongoEngineBackend', ) MONGOENGINE_USER_DOCUMENT = 'mongoengine.django.auth.User' AUTH_USER_MODEL = 'mongo_auth.MongoUser'
然后您可以使用标准方式./manage.py createsuperuser
答案 2 :(得分:0)
通常情况下,管理者可以通过模型访问,而不是直接调用。
User.objects.create_superuser(...)
答案 3 :(得分:0)
错误本质上意味着您尝试调用非静态方法,就像它是静态方法一样。具体来说,它表示你需要在UserManager的实例上调用create_superuser()
,而不是在UserManager类本身上调用。
如果您使用的是默认用户模型,则User.objects将是UserManager的实例,因此您可以调用User.objects.create_superuser(...)
。您可能正在使用mogoengine提供的用户模型,因此我尝试导入mongoengine用户类,然后尝试MongoUser.objects.create_superuser()