Start here. This is the direct spoken answer to practice first.
Overview
DRF separates the Python data a view uses from the HTTP representation read and written on the wire.
DRF wraps Django's request and exposes request.data, which is produced by a parser selected from the request's content type. It works for methods such as POST, PUT, and PATCH rather than only form POST data. A view returns a DRF Response containing Python data. Content negotiation uses the request and configured renderers to select the response media type, and rendering converts that data to bytes later in the response lifecycle.