Охватываемые темы: HttpRequest — объект запроса, HttpResponse — объект ответа, Redirect, render() — удобный shortcut.
HttpRequest — объект запроса
def my_view(request):
# Метод
request.method # 'GET', 'POST', 'PUT', ...
# Данные
request.GET # QueryDict с GET параметрами
request.POST # QueryDict с POST данными
request.FILES # загруженные файлы
request.body # тело запроса (bytes)
# Пользователь
request.user # аутентифицированный пользователь
request.user.is_authenticated
# Мета-данные
request.META['HTTP_HOST'] # домен
request.META['REMOTE_ADDR'] # IP пользователя
request.META['HTTP_USER_AGENT'] # браузер
request.path # '/tasks/1/'
request.get_full_path() # '/tasks/?status=done'
HttpResponse — объект ответа
from django.http import HttpResponse, JsonResponse
# Простой текст
return HttpResponse('Hello, World!', status=200)
# HTML
return HttpResponse('<h1>Hello</h1>', content_type='text/html')
# JSON
return JsonResponse({'status': 'ok', 'count': 42})
# Список
return JsonResponse([1, 2, 3], safe=False)
# Коды статуса
from django.http import HttpResponseNotFound, HttpResponseForbidden
return HttpResponseNotFound('Не найдено')
return HttpResponseForbidden('Доступ запрещён')
Redirect
from django.shortcuts import redirect
from django.urls import reverse
return redirect('task-list') # по имени URL
return redirect('/tasks/') # по URL
return redirect('task-detail', pk=task.pk) # с аргументами
return redirect(reverse('task-detail', kwargs={'pk': 1}))
render() — удобный shortcut
from django.shortcuts import render
def task_list(request):
tasks = Task.objects.all()
return render(request, 'tasks/list.html', {'tasks': tasks})
# Эквивалентно:
from django.template.loader import render_to_string
html = render_to_string('tasks/list.html', {'tasks': tasks}, request=request)
return HttpResponse(html)
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!