Как автоматизировать создание пользователей на Django? - PullRequest
87 голосов
/ 05 июня 2011

Я хочу автоматически запустить manage.py createsuperuser на django, но кажется, что нет способа установить пароль по умолчанию.

Как я могу получить это? Он должен быть независимым от базы данных django.

Ответы [ 12 ]

0 голосов
/ 31 января 2017

Этот небольшой скрипт на python может создать обычного пользователя или суперпользователя

#!/usr/bin/env python

import os
import sys
import argparse
import random
import string
import django


def main(arguments):

    parser = argparse.ArgumentParser()
    parser.add_argument('--username', dest='username', type=str)
    parser.add_argument('--email', dest='email', type=str)
    parser.add_argument('--settings', dest='settings', type=str)
    parser.add_argument('--project_dir', dest='project_dir', type=str)
    parser.add_argument('--password', dest='password', type=str, required=False)
    parser.add_argument('--superuser', dest='superuser', action='store_true', required=False)

    args = parser.parse_args()

    sys.path.append(args.project_dir)
    os.environ['DJANGO_SETTINGS_MODULE'] = args.settings
    from django.contrib.auth.models import User
    django.setup()

    username = args.username
    email = args.email
    password = ''.join(random.sample(string.letters, 20)) if args.password is None else args.password
    superuser = args.superuser 

    try:
        user_obj = User.objects.get(username=args.username)
        user_obj.set_password(password)
        user_obj.save()
    except User.DoesNotExist:
    if superuser:
            User.objects.create_superuser(username, email, password)
    else:
        User.objects.create_user(username, email, password)

    print password


if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))

- суперпользователь и --password не обязательны.

Если --superuser не определен, будет создан обычный пользователь Если --password не определен, будет сгенерирован случайный пароль

    Ex : 
        /var/www/vhosts/PROJECT/python27/bin/python /usr/local/sbin/manage_dja_superusertest.py --username USERNAME --email TEST@domain.tld --project_dir /var/www/vhosts/PROJECT/PROJECT/ --settings PROJECT.settings.env 
0 голосов
/ 13 ноября 2011

очень просто, прослушайте сигнал post syncdb, прочитайте учетные данные суперпользователя из файла конфигурации и примените его.

извлечение django-bootup

https://github.com/un33k/django-bootup/blob/master/README

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...