【问题标题】:How to encrypt a password field in django如何在 django 中加密密码字段
【发布时间】:2017-11-11 01:01:00
【问题描述】:

我有一个带有名称、代码和密码的模型。我需要加密密码。此外,我不应该在密码字段中显示纯文本。 我参考了这个链接

Password field in Django model

但答案是旧的,需要知道目前的方法是什么。

我的模型如下

class Crew(models.Model):
    crew_id = models.AutoField(primary_key=True)
    crew_code = models.CharField(max_length=200, null=False, unique=True)
    crew_name = models.CharField(max_length=200, null=False)
    crew_password = models.CharField(max_length=200, null=False)

【问题讨论】:

    标签: python django encryption passwords


    【解决方案1】:

    将此添加到您的模型中:

    def save(self, *args, **kwargs):
        self.crew_password = make_password(self.crew_password)
        super(Crew, self).save(*args, **kwargs)
    

    并在您的表单中隐藏密码字段中的文本:

    password = forms.CharField(
        widget=forms.PasswordInput
    )
    

    【讨论】:

      【解决方案2】:

      Django 添加了 PasswordInput 小部件,使用它在模板中创建密码字段

      from django.forms import ModelForm, PasswordInput
      
      class CrewForm(ModelForm):
          class Meta:
              model = Crew
              fields = '__all__'
              widgets = {
                  'crew_password': PasswordInput(),
              }
      

      同样@Exprator 建议使用 make_password 更新视图中的密码字段...

      form.crew_password=make_password(crew_password)
      form.save()
      

      【讨论】:

        【解决方案3】:

        在你看来

        from django.contrib.auth.hashers import make_password
        crew_password = 'take the input if you are using form'
        form = FormName(commit=False)
        form.crew_password=make_password(crew_password)
        form.save()
        

        【讨论】:

        • 谢谢,这对我很有用。
        猜你喜欢
        • 2021-12-29
        • 2016-04-09
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        • 2011-03-02
        • 2022-09-28
        • 2011-02-28
        相关资源
        最近更新 更多