Django request.body returning data but not request.POST using forms

I'm using forms in Django and trying to get the get the data back using request.POST, but this returns an empty dictionary for me: <QueryDict: {}>. When using request.body, however, I get the raw data back. How can I get the data from request.POST as well, because I do not want to work with raw data. The console output of the print statements are put in comments next to them.

forms.py

class NameForm(forms.Form):
    first_name = forms.CharField(label='First name:', max_length=100)
    last_name = forms.CharField(label='Last name:')

views.py

@csrf_exempt
def blank(request):
    form = NameForm()
    print(f"request.body: {request.body}") # request.body: b'first_name=Adam&last_name=Smith'
    print(f"request.POST: {request.POST}") # request.POST: <QueryDict: {}>

    return render(request, 'blank.html', {'form': form})

blank.html

<!DOCTYPE html>
<html lang="en">
    <head>
    </head>
    <body>
        <form action="" method="post">
            {{ form }}
            <input type="submit" value="Submit">
        </form>
    </body>
</html>
Back to Top