📝 Django

HttpRequest and HttpResponse in Django

P
Author
PyLand Team
📅
Published
30.06.2026
⏱️
Reading time
1 min
👁️
Views
252
🌱
Level
Beginner

Covered topics: HttpRequest — the request object, HttpResponse — the response object, Redirect, render() — a convenient shortcut.

HttpRequest — the request object

def my_view(request):
    # Method
    request.method          # 'GET', 'POST', 'PUT', ...

    # Data
    request.GET             # QueryDict with GET parameters
    request.POST            # QueryDict with POST data
    request.FILES           # uploaded files
    request.body            # request body (bytes)

    # User
    request.user            # authenticated user
    request.user.is_authenticated

    # Metadata
    request.META['HTTP_HOST']           # domain
    request.META['REMOTE_ADDR']         # user's IP
    request.META['HTTP_USER_AGENT']     # browser
    request.path                        # '/tasks/1/'
    request.get_full_path()             # '/tasks/?status=done'

HttpResponse — the response object

from django.http import HttpResponse, JsonResponse

def plain_text_view(request):
    return HttpResponse('Hello, World!', status=200)


def html_view(request):
    return HttpResponse('<h1>Hello</h1>', content_type='text/html')


def object_json_view(request):
    return JsonResponse({'status': 'ok', 'count': 42})


def list_json_view(request):
    return JsonResponse([1, 2, 3], safe=False)

For error responses, prefer HttpResponseNotFound or HttpResponseForbidden, or use Django’s get_object_or_404() shortcut when retrieving an object.

Redirect

from django.shortcuts import redirect
from django.urls import reverse

def task_redirect(request, task):
    return redirect('task-detail', pk=task.pk)  # prefer a named URL


def first_task_redirect(request):
    url = reverse('task-detail', kwargs={'pk': 1})
    return redirect(url)

render() — a convenient shortcut

from django.shortcuts import render

def task_list(request):
    tasks = Task.objects.all()
    return render(request, 'tasks/list.html', {'tasks': tasks})

# Equivalent to:
from django.template.loader import render_to_string

def task_list_expanded(request):
    tasks = Task.objects.all()
    html = render_to_string('tasks/list.html', {'tasks': tasks}, request=request)
    return HttpResponse(html)

Your reaction to the article

💬 Comments (0)

🔐 Sign in to leave a comment
🚪 Login
💭

No comments yet

Be the first to share your opinion about this article!

🔗 Similar

Similar articles

Continue learning with these materials

📝

Search in Django

You can start with simple Django ORM filters and move to PostgreSQL features when you...

📅 30.06.2026 👁️ 279
📝

Swagger Documentation with drf-spectacular

drf-spectacular generates an OpenAPI 3.0 schema and Swagger UI for DRF.

📅 30.06.2026 👁️ 565
📝

settings.py: Django Configuration

settings.py is the central configuration file for a Django project.

📅 30.06.2026 👁️ 316
🎓 Continue learning

Courses that cover this material

Visit the course to apply this material in practice.

Django RequestLab: from HTTP to secure production Open course curriculum