2013-07-01 47 views
0

我有点困惑它是如何工作的。我已经完成了用mongoengine替换Django的默认身份验证的所有步骤,以便它使用mongodb和数据库,但是我试图创建一个注册页面,但无法弄清楚如何使用超级用户功能。我目前正试图你如何创建一个使用mongoengine的超级用户?

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) 

回答

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) 
0

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

User.objects.create_superuser(...) 
+0

当我尝试这一点,告诉我 “查询集”对象有没有属性“create_superuser” –

+0

我从来没有使用MongoEngine。正如@Elliott上面提到的,这条线是否工作? 'MongoUser.objects.create_superuser()'? –

+0

那么mongoengine用户类也称为用户。我只是确保导入,而不是django的。所以我给出的例子是使用mongoengine用户类 –

0

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

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

1

在你的settings.py

 

    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

相关问题