0
0
Djangoframework~5 mins

Request parsing and response rendering in Django

Choose your learning style9 modes available
Introduction

Request parsing helps your Django app understand what the user sends. Response rendering sends back the right information to the user.

When you want to get data from a user submitting a form or API call.
When you need to send HTML pages or JSON data back to the user.
When building APIs that accept JSON and return JSON responses.
When handling file uploads or complex data from users.
When you want to customize how data is shown to users.
Syntax
Django
from django.http import JsonResponse, HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json

@csrf_exempt
def my_view(request):
    if request.method == 'POST':
        data = json.loads(request.body.decode('utf-8'))  # parse JSON request
        response_data = {'message': f"Hello, {data.get('name', 'Guest')}!"}
        return JsonResponse(response_data)  # render JSON response
    else:
        return HttpResponse('Send a POST request with JSON data.')

Use request.body to get raw data sent by the user.

JsonResponse helps send JSON data back easily.

Examples
This reads JSON data sent by the user in the request body.
Django
data = json.loads(request.body.decode('utf-8'))
This sends a JSON response with the given dictionary.
Django
return JsonResponse({'key': 'value'})
This sends a plain text response to the user.
Django
return HttpResponse('Hello world', content_type='text/plain')
Sample Program

This Django view accepts POST requests with JSON data containing a 'name'. It responds with a JSON greeting. If the JSON is invalid, it returns an error. For other request types, it sends a simple text message.

Django
from django.http import JsonResponse, HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json

@csrf_exempt
def greet_user(request):
    if request.method == 'POST':
        try:
            data = json.loads(request.body.decode('utf-8'))
            name = data.get('name', 'Guest')
            response = {'greeting': f'Hello, {name}!'}
            return JsonResponse(response)
        except json.JSONDecodeError:
            return JsonResponse({'error': 'Invalid JSON'}, status=400)
    else:
        return HttpResponse('Please send a POST request with JSON data.', content_type='text/plain')
OutputSuccess
Important Notes

Remember to disable CSRF protection for API views or handle tokens properly.

Always check the request method before parsing data.

Use JsonResponse to automatically set the right headers for JSON.

Summary

Request parsing reads user data from the request body, often JSON.

Response rendering sends data back, like JSON or plain text.

Django provides easy tools like json.loads and JsonResponse to handle these tasks.