Python 如何在API响应中隐藏密码?

Python 如何在API响应中隐藏密码?,python,django,django-models,password-protection,Python,Django,Django Models,Password Protection,我知道,有些人可能会说,如果我必须隐藏密码,就不需要在api响应中提供密码。但问题是,即使我去管理部分,我也可以看到密码散列值,这就是为什么我要这么做 所以我的问题是,如何在API响应中隐藏密码。例如,使用星号 注意:我的数据有一个自定义模型。 我只需要一个函数和它的工作位置。 型号.py from django.db import models from django.contrib.auth.hashers import make_password class MyUser(models

我知道,有些人可能会说,如果我必须隐藏密码,就不需要在api响应中提供密码。但问题是,即使我去管理部分,我也可以看到密码散列值,这就是为什么我要这么做

所以我的问题是,如何在API响应中隐藏密码。例如,使用星号

注意:我的数据有一个自定义模型。 我只需要一个函数和它的工作位置。

型号.py

from django.db import models
from django.contrib.auth.hashers import make_password


class MyUser(models.Model):
    full_name = models.CharField(max_length=128)
    profile_picture = models.ImageField(upload_to="user_data/profile_picture", blank=True)
    username = models.CharField(max_length=128, unique=True)
    birth_date = models.DateField(blank=True)
    gender = models.CharField(max_length=10, blank=True)
    password = models.CharField(max_length=255)
    contact = models.CharField(max_length=15, blank=True)
    email = models.CharField(max_length=100, unique=True)
    time_stamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.username

    def save(self, *args, **kwargs):
        if not self.pk:
            self.password = make_password(self.password)
        super(MyUser, self).save()

您可以提供任意数量的星号,或者提供哈希密码(
user.password
)。但是,您无法知道用户的密码是什么,或者密码中有多少个字符,因此不可能提供*************(相同数量的字符)的密码

如果你觉得需要提供一些东西,我建议你选择任意数量的星号


另一方面,我强烈建议您查看,而不是完全滚动您自己的模型。

最好覆盖django.contrib.auth.models中的BaseUserManager、AbstractBaseUser,以使用自定义模型。因此,它将充当默认的用户模型(内置模型),并将完成所有工作。或者

您正在使用django rest框架吗?你能告诉我你当前的view.py以及你在哪里做出回应吗?谢谢你的关注。现在,我已经对源代码进行了更改,以解决这些问题。再次感谢!请继续您的贡献和未来的帮助:)只需在序列化程序extra_kwargs={'password':{'write_only':True}