Django模型中的PasswordField?

时间:2013-01-07 10:03:54

标签: django

我正在尝试创建一个名为Username的简单模型,如下所示:

class User(models.Model):
    username = models.CharField(max_length=100) #Id is automatically generated by Django
    password = models.CharField(max_length=100)

这是我想要创建的Django模型。问题是用户名和密码属性存储为CharField,而我希望密码在数据库中存储为 * *或加密形式。看起来他们没有像Django中的CharField之类的PasswordField。最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

根据THE DOCS

password = forms.CharField( 
    widget=forms.PasswordInput(render_value=False), 
    label="Your Password"
)

这个借给了

<input type="password" />

以您的呈现形式

关于您的存储部分,您需要存储密码的哈希值,而不是*的列表,否则无论如何都无法检索它。您可以使用hashlib模块

user.password = hashlib.sha224(user.password).hexdigest()
user.save()

当然,在实施时你必须要特别注意。以上只是一个简单的例子,请查看文档以便进一步学习

答案 1 :(得分:0)

Django附带用户模型。它位于django.contrib.auth.models下。该模型拥有您需要的一切,如果已经存在,那么开始创建自己的模型将是愚蠢的。您还可以在django.contrib.auth.forms中创建用户创建和身份验证表单,例如用户模型中的set_password方法,以及更多内容。