我在Django项目中写了一个用户模型,这个模型中包含一个密码字段。在使用Django的admin模块管理这个用户模型时,如果在admin模块中新建一条用户模型中的数据,保存在数据库中的密码是没有经过哈希加密的。
models.py
class TeacherInfo(models.Model):
school = models.CharField(verbose_name='学校', max_length=16)
stuffnum = models.IntegerField(verbose_name='工号')
name = models.CharField(verbose_name='姓名', max_length=16)
password = models.CharField(verbose_name='密码', max_length=64)
classnum = models.CharField(verbose_name='班级编号', max_length=64)
admin.py
from django.contrib import admin
from manageApp import models
# Register your models here.
admin.site.register(models.TeacherInfo)
我想找到admin模块是如何保存模型的信息的,然后修改它将数据保存到数据库时的方法。
#希望得到的结果
找到admin模块保存数据的方法的文件位置
使用admin模块创建模型数据时能将密码字段进行哈希加密后保存到数据库中。
因为你不是用的django的用户认证系统的话,你想要密码加密的话可以使用django提供的make_password方法重写模型类的save方法。示例如下:
from django.contrib.auth.hashers import make_password
class User(models.Model):
username = models.CharField(max_length=255,verbose_name='用户名')
password = models.CharField(max_length=255, verbose_name='密码')
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
self.password = make_password(self.password)
super().save(force_insert=False,force_update=False,using=None,update_fields=None)
如果帮助到你,请采纳!