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)
💬 Comments (0)
No comments yet
Be the first to share your opinion about this article!