如何在导入用户时将明文密码转换为Django密码?
我正在尝试设置一个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
然后在保存之前,把原始密码传给它。