【问题标题】:Python Shell Add Django Admin User to a GroupPython Shell 将 Django 管理员用户添加到组
【发布时间】:2016-07-05 20:37:35
【问题描述】:

我正在尝试添加用户并将用户分配给组。以下用于添加用户,但是当我取消注释指示的行时,我收到下面提到的错误。如何摆脱错误以便将用户(ur)添加到组中?感谢您的帮助!

# This file is named passuserstack.py
# I call it by typing: python passuserstack.py johndoe
# to add a user named johndoe

import os
import sys

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dmt.settings")
from django.contrib.auth.models import User, Group
from django.contrib.auth import authenticate, login

arg1 = sys.argv[1]

def loginuser(myuser=arg1):
    myuserpw = myuser + 'pw'

    # Check to see if that user exists 
    if ( User.objects.filter(username=myuser).exists() ):
        #do nothing
        mynote = "I am a returning user"
    else: 
        # create the user
        mynote = "I am a new user"
        ur = User.objects.create_user(myuser, 'notkeeping@email.com', myuserpw)
        ur.is_staff = True
        ur.save()
        # assign permissions by assigning to a group
        gp = Group.objects.get(name='NBI_graph_tool') 
        #gp.user_set.add(ur) 
        # when I uncomment the line just above this, I get the error :
        # raise AppRegistryNotReady("Models aren't loaded yet.")
        # django.core.exceptions.AppRegistryNotReady" Models aren't loaded yet.

if __name__ == "__main__":
    loginuser()

【问题讨论】:

  • 从 django python shell 运行你的程序:python ./manage.py shell
  • 我试过这个:python manage.py shell。然后在下一行 >>>passuserstack.py johndoe,我得到一个 SyntaxError: invalid syntax,指向 johndoe 中的 e。我不确定我是否正确理解了乔尔。
  • 对不起,我忘了你要运行程序。也许您可以将文件作为参数提供给 shell,但我不确定
  • 如果我在 os.environ.setdefault....line 之后添加两行似乎可以工作。它们是: import django 然后 django.setup()

标签: python django permissions django-admin


【解决方案1】:

正如 Sandra 在 cmets 中指出的那样,您必须使用 django.setup()。它记录在the Django project site

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 2013-07-11
    • 2018-08-03
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多