0

我有点困惑它是如何工作的。我已经完成了用 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)
4

4 回答 4

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)
于 2013-07-02T07:25:12.687 回答
1

在你的 settings.py

    进口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

于 2015-10-07T06:23:49.583 回答
0

通常通过模型访问管理器,而不是直接调用。

User.objects.create_superuser(...)
于 2013-07-01T19:02:57.520 回答
0

该错误本质上意味着您正在尝试调用非静态方法,就像它是静态方法一样。具体来说,它是说您需要调用create_superuser()UserManager 的实例,而不是 UserManager 类本身。

如果您使用的是默认用户模型,那么 User.objects 将是 UserManager 的一个实例,因此您可以调用User.objects.create_superuser(...). 您可能正在使用 mogoengine 提供的用户模型,所以我会尝试导入 mongoengine 用户类,然后尝试MongoUser.objects.create_superuser()

于 2013-07-01T19:04:15.260 回答