Python Django 如何在 django models.py 中创建哈希字段

标签 python django python-3.x django-models django-model-field

我正在开发一个 Python(3.6) 和 Django(1.10) 项目,我需要在其中保存一些第三方服务的用户凭证,例如用户名、密码和电子邮件,我只实现了 rest API,所以根本没有form.py。 那么,如何在 models.py 文件中创建哈希字段?

这是我当前的 models.py:

class DeploymentOnUserModel(models.Model):
    deployment_name = models.CharField(max_length=256, )
    credentials = models.TextField(blank=False)
    project_name = models.CharField(max_length=150, blank=False)
    project_id = models.CharField(max_length=150, blank=True)
    cluster_name = models.CharField(max_length=256, blank=False)
    zone_region = models.CharField(max_length=150, blank=False)
    services = models.CharField(max_length=150, choices=services)
    configuration = models.TextField(blank=False)
    routing = models.TextField(blank=True)

    def save(self, **kwargs):
        if not self.id and self.services == 'Multiple' and not self.routing:
            raise ValidationError("You must have to provide routing for multiple services deployment.")
        super().save(**kwargs)

我想添加三个新的哈希字段,例如用户名密码电子邮件

请帮帮我!

提前致谢!

最佳答案

您可以使用标准的 CharField。要存储哈希值,请使用 make_password保存前方法:

from django.contrib.auth.hashers import make_password

password = models.CharField(max_length=256)

def save(self, **kwargs):
    some_salt = 'some_salt' 
    password = make_password(self.password, some_salt)
    if not self.id and self.services == 'Multiple' and not self.routing:
        raise ValidationError("You must have to provide routing for multiple services deployment.")
    super().save(**kwargs)

关于Python Django 如何在 django models.py 中创建哈希字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51682594/

相关文章:

django - 将 ManyToManyField 迁移到 null tr​​ue,空白 true,无法识别

django - 覆盖 django-allauth 中的模板

python - 在 python 中是否有等同于 get() 的东西?

python - 文本冒险中匹配用户选择的问题。

python - LSTM - 如何防止相同输入出现不同的损失/R2 结果?

python - PySide 如何获取 QWebInspector 相同的窗口

python - 可选参数约束

python - 声明的列表引发 NoneType 异常

python - 有没有办法在 2 个字段上创建一个唯一的 id?

Python3错误: AttributeError: module 'urllib' has no attribute 'request'