如何在导入用户时将明文密码转换为Django密码?

1 投票
2 回答
1124 浏览
提问于 2025-04-17 22:56

我正在尝试设置一个Django项目,以处理很多用户(2万)。

我从一个Excel文件中导入用户,用户的密码是明文存储的(我知道,这样不好!)

我使用了这个工具来进行导入,但导入功能并没有对密码进行任何转换。

我该怎么做才能正确存储密码呢?

2 个回答

4

在导入之前,你应该先对密码进行加密,可以通过重写一个叫做 before_import_row 的方法来实现。

可以这样做:

    from import_export import resources, fields
    from import_export.admin import ImportExportModelAdmin
    from django.contrib.auth.hashers import make_password

    class UserResource(resources.ModelResource):

       groups = fields.Field(
           column_name='group_name',
           attribute='groups',
           widget=ManyToManyWidget(Group, ',','name')
       )
       def before_import_row(self,row, **kwargs):
           value = row['password']
           row['password'] = make_password(value)
       class Meta:
           model = User



2

你可以直接从django里导入这个函数:

from django.contrib.auth.hashers import make_password

然后在保存之前,把原始密码传给它。

撰写回答