dajngo rest swagger(2.1.0)の最新バージョンでは、YAMLドキュメントストップは推奨されていません。私はPOST要求パラメータを表示するためにswaggerを得ることができません。ここでdjango-rest-swagger:APIViewを使用してPOSTリクエストのパラメータを指定する方法
は、私の見解ここ
class UserAuthenticationView(APIView):
def post(self, request, *args, **kwargs):
serializer = UserAuthenticationSerializer(data=self.request.data)
if serializer.is_valid():
user = serializer.validated_data['user']
return Response({'token': user.auth_token.key}, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_401_UNAUTHORIZED)
は私のシリアライザは、これは私が私がのためのフィールドを持つフォームを得ることはありません、私の生成
で得るものです
class UserAuthenticationSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
def validate(self, attrs):
username = attrs.get('username')
password = attrs.get('password')
if username and password:
user = authenticate(username=username, password=password)
if user:
if not user.is_active:
msg = 'User account is disabled.'
raise serializers.ValidationError(msg, code='authorization')
else:
msg = 'Unable to log in with provided credentials.'
raise serializers.ValidationError(msg, code='authorization')
else:
msg = 'Must include "username" and "password".'
raise serializers.ValidationError(msg, code='authorization')
attrs['user'] = user
return attrs
ですPOSTデータ。それをどうやって得るのですか? UserAuthenticationSerializer
を返します - あなたはあなたのビューにget_serializer
メソッドを定義した場合、それが動作するはずです - あなたが見ることができるように
def get_serializer_fields(self, path, method, view):
"""
Return a list of `coreapi.Field` instances corresponding to any
request body input, as determined by the serializer class.
"""
if method not in ('PUT', 'PATCH', 'POST'):
return []
if not hasattr(view, 'get_serializer'):
return []
serializer = view.get_serializer()
if isinstance(serializer, serializers.ListSerializer):
return [
coreapi.Field(
name='data',
location='body',
required=True,
type='array'
)
]
...
:
機能ベースのビューではどのような方法がありますか? –