Django DRF报错:return serializer_field.context[‘request‘].user,KeyError: ‘request‘

Django error

return serializer_field.context['request'].user
KeyError: 'request'

insert image description here
Reason for error: This is because I use api_view instead of GenericAPIView (GenericAPIView will automatically process the context, but api_view will not)
so the interface in the view should be written like this:

@api_view(["GET", "POST"])
def article_list(request, format=None):
    context = {
    
    
        "request": request,
    }
    if request.method == "GET":
        articles = Article.objects.all()
        serializer = ArticleSerializer(articles, many=True)
        return Response(serializer.data)
    elif request.method == "POST":
        print(request.data)
        print(request.user)
        serializer = ArticleSerializer(data=request.data, context=context)
        print(serializer)
        if serializer.is_valid():
            serializer.save(author=request.user)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Additional pass context=context parameter to own ArticleSerializer

Guess you like

Origin blog.csdn.net/weixin_43883625/article/details/131446525