📝 Django

HttpRequest и HttpResponse в Django

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
77
🌱
Уровень
Начальный
🐦 💼 ✈️

Охватываемые темы: 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)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 132
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 85
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 73

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!