【问题标题】:Password fields rendering as plain text in documentation密码字段在文档中呈现为纯文本
【发布时间】:2015-06-22 14:55:37
【问题描述】:

我正在使用 Django rest framework 3.1 和 django-rest-swagger 0.3.2。一切运行良好,但是我的登录序列化程序中的密码输入字段存在问题。我的登录序列化器非常简单,它继承自rest_framework.authtoken.serializers.AuthTokenSerializer:

class MyLoginSerializer(AuthTokenSerializer):

    def validate(self, attrs):
       # small amount of validation logic here

AuthTokenSerializer 具有使用正确样式定义的 password 字段:

class AuthTokenSerializer(serializers.Serializer):
    username = serializers.CharField()
    password = serializers.CharField(style={'input_type': 'password'})

但 Swagger 将 POST 文档中的密码输入显示为纯文本 (input type='text')。我不确定这里出了什么问题,django-rest-swagger 不应该能够解释这里的样式并相应地呈现输入吗?我错过了什么吗?任何建议表示赞赏,非常感谢!

【问题讨论】:

    标签: django django-rest-framework swagger swagger-ui


    【解决方案1】:

    我仍在使用 DRF 2.4.4,但这是我必须 * 出领域的:

    from django.forms.widgets import PasswordInput
    
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        password = serializers.CharField(
            required=False,
            write_only=True, # <- never send password (or hash) to the client
            allow_none=True, # <- allow users to not specify a password 
            blank=True,
            # this creates a password input field for DRF-only 
            # front end (not sure about swagger)
            # vvvvvvvvvvvvvvvvvv
            widget=PasswordInput
            )
        class Meta:
            model = User
            fields = ('url', 'id', 'username', 'password', [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2022-01-22
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多