我正在尝试创建一个名为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。最好的方法是什么?
答案 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方法,以及更多内容。