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

时间:2014-03-19 08:46:42

标签: python django django-authentication

我试图设置一个djangoproject来处理许多用户(20 k)。

我从excel文件导入用户,其中用户密码是纯文本的(我知道,这很糟糕!)

我使用https://github.com/bmihelac/django-import-export进行导入,但导入功能不会转换密码。

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

2 个答案:

答案 0 :(得分:2)

在导入之前,您应该通过覆盖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



答案 1 :(得分:1)

您可以直接从django导入此功能:

from django.contrib.auth.hashers import make_password

并在保存之前将原始密码传递给它。