2017-06-09 45 views
0

我有一個名稱,代碼和密碼的模型。我需要加密密碼。另外,我不應該在密碼字段中顯示純文本。 我提到這個鏈接如何加密django中的密碼字段

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) 

回答

2
在你看來

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() 
0

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() 
0

添加到您的模型:

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 
)