我有一个名字,代码和密码的模型。我需要加密密码。另外,我不应该在密码字段中显示纯文本。 我提到了这个链接
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)
答案 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()