How to create user from django shell How to create user from django shell python python

How to create user from django shell


You should not create the user via the normal User(...) syntax, as others have suggested. You should always use User.objects.create_user(), which takes care of setting the password properly.

user@host> manage.py shell>>> from django.contrib.auth.models import User>>> user=User.objects.create_user('foo', password='bar')>>> user.is_superuser=True>>> user.is_staff=True>>> user.save()


The fastest way creating of super user for django, type in shell:

python manage.py createsuperuser


To automate the script you can use the pipe feature to execute the list of commands without having to type it out every time.

### content of "create_user.py" filefrom django.contrib.auth import get_user_model# see ref. belowUserModel = get_user_model()if not UserModel.objects.filter(username='foo').exists():    user=UserModel.objects.create_user('foo', password='bar')    user.is_superuser=True    user.is_staff=True    user.save()

Ref: get_user_model()

Remember to activate VirtualEnv first, then run the command below (for Linux):

cat create_user.py | python manage.py shell

If you using window then substitute the cat command with the type command

type create_user.py | python manage.py shell

OR for both Linux and Windows

# if the script is not in the same path as manage.py, then you must #    specify the absolute path of the "create_user.py" python manage.py shell < create_user.py

Pitfall: don't include blank lines in any of the indented blocks, think of it as you pasting your code in the REPL. If you have any empty lines it won't work.