Django Admin中的密码小部件和密码哈希

时间:2017-07-07 06:46:19

标签: python django django-admin

我是Python编码的新手,现在正在尝试学习Django。 现在我正在使用django 1.11.3版本。 所以我在Django中学到了基本的东西并创建了一个应用程序。

在我的应用中,我创建了一个包含密码字段的学生模型。我注意到的是,在管理模块中,密码字段以简单文本存储。所以我需要帮助来管理管理模块中的密码字段。我需要md5哈希。

你们也可以帮助我。有没有办法解决这个问题?

这就是我的尝试。

我的模特

class student(models.Model):
    name = models.CharField(max_length=100)
    age = models.CharField(max_length=2)
    dob = models.DateField()
    father_name = models.CharField(max_length=100)
    username = models.CharField(max_length=25,null=True)
    password = models.CharField(max_length=100,null=True)
    def __unicode__(self):
        return self.name

我的管理员

from django.contrib import admin
from django import forms
from .models import student

admin.site.register(student)

class studentAdmin(admin.ModelAdmin):
    formfield_overrides = {
        student.password: {'widget': forms.PasswordInput},
        }

2 个答案:

答案 0 :(得分:2)

一定不能这样做。

Django包含一个认证框架,其中包含您已经拥有的所有内容,包括customise the model包含您的出生日期字段的能力。

(注意,包括年龄在内也没有意义;您可以随时根据需要从dob计算出来。)

答案 1 :(得分:1)

查看如何完成此操作的好地方是查看django.contrib.auth中的Django源代码,它们为用户处理相同的场景。

您的想法是,您将使用带有密码字段的自定义管理表单,以便您可以从表单中获取原始密码,然后手动设置密码,首先通过哈希表运行它。

type Documents struct {
    UserID    string    `json:"user_id"`
    PartnerID []string  `json:"partner_id"`
    LastLogin int       `json:"last_login"`
}

如果您不想使用默认类型,make_password也会采用哈希类型争论。