Django: Как предоставить учетную запись пользователя из таблицы пользователя в Excel - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу создать учетные записи с именами пользователей и паролями, которые представляют собой коды учеников, хранящиеся в таблицах Excel, что мне делать?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2019

Вы можете создавать User объекты с именем пользователя и паролем. Например, обработав файл CSV, в котором первый столбец содержит username, а второй - raw password:

from csv import reader
from django.contrib.auth.models import User

with open('users.csv', 'r') as csv_file:
    csvf = reader(csv_file)
    data = []
    for username, password, *__ in csvf:
        user = User(username=username)
        user.<b>set_password(password)</b>
        data.append(user)
    User.objects.bulk_create(data)

Важно использовать .set_password(..) [Django-doc] здесь, поскольку это будет хэшировать пароль в базе данных.

0 голосов
/ 09 ноября 2019

Сначала экспортируйте данные в формате Excel в файл CSV. Затем вы можете легко перебрать файл CSV с помощью библиотеки csv и вставить данные в Django.

В качестве примера, скажем, поля в файле CSV выглядят следующим образом:

name, username, password

Затем вы можете использовать этот код для построчного чтения файла CSV и добавления пользователей в базу данных:

def bulk_add_users(path):
    with open('path_to_csv_file', mode='r') as csv_file:
        reader = csv.reader(csv_file)
        _ = next(reader)
        for line in reader:
            name = line[0]
            username = line[1]
            password = line[2]
            if not (name and
                    username and
                    password):
                raise ValueError(f'Invalid User data!')
            user = User(name=name, username=username)
            user.set_password(password)
            user.save()

Редактировать:

Если вы используете модель django (или его расширение), вы должны использовать user.set_password('raw_password'), чтобы шифрование пароля имело место перед сохранением.

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