如何加密django中的密码字段

时间:2017-06-09 06:14:09

标签: python django encryption passwords

我有一个名字,代码和密码的模型。我需要加密密码。另外,我不应该在密码字段中显示纯文本。 我提到了这个链接

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)

3 个答案:

答案 0 :(得分:6)

在您的视图中

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

答案 1 :(得分:1)

将此添加到您的模型中:

String query = "Select item_code,item_name, item_price,stock From Items  where Item_name=?";
String query = "Insert into Transactions(transaction_code, transaction_date, item_code, item_name, quantity, item_price, total) values (?,?,?,?,?,?,?) ;";

并在表格中隐藏密码字段中的文字:

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

答案 2 :(得分: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()