РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
286 of 818 menu

Функция render

Функция render является основным инструментом для рендеринга шаблонов в Django. Она принимает объект запроса, имя шаблона и словарь контекста, а затем возвращает объект HttpResponse с отрендеренным содержимым. Функция автоматически обрабатывает поиск шаблонов в настроенных директориях и применяет контекстные процессоры для добавления общих переменных.

Синтаксис

from django.shortcuts import render return render(request, template_name, context={}, content_type=None, status=None, using=None)

Параметры функции:

  • request - объект HttpRequest, представляющий текущий запрос
  • template_name - имя шаблона (строка) или список имен шаблонов
  • context - словарь с данными для подстановки в шаблон (опционально)
  • content_type - MIME-тип ответа (по умолчанию text/html)
  • status - HTTP статус ответа (по умолчанию 200)
  • using - имя движка шаблонов для рендеринга

Пример

Простой пример рендеринга шаблона с контекстом:

from django.shortcuts import render from django.http import HttpResponse def home(request): context = { 'name': 'John Doe', 'age': 30, } return render(request, 'home.html', context)

В шаблоне home.html можно использовать переменные name и age:

<h1>Welcome {{ name }}!</h1> <p>Your age is {{ age }}</p>

Результат выполнения кода:

<h1>Welcome John Doe!</h1> <p>Your age is 30</p>

Пример

Рендеринг с использованием модели и передачи данных из базы данных:

from django.shortcuts import render from myapp.models import Article def article_list(request): articles = Article.objects.filter(status='published')[:5] context = { 'articles': articles, 'title': 'Latest Articles', } return render(request, 'articles/list.html', context)

В шаблоне articles/list.html можно итерироваться по списку статей:

<h1>{{ title }}</h1> <ul> {% for article in articles %} <li>{{ article.title }} - {{ article.created_at|date:"F j, Y" }}</li> {% empty %} <li>No articles found</li> {% endfor %} </ul>

Результат выполнения кода:

<h1>Latest Articles</h1> <ul> <li>First Article - January 1, 2025</li> <li>Second Article - January 2, 2025</li> <li>Third Article - January 3, 2025</li> </ul>

Пример

Использование функции render с различными HTTP статусами и типами содержимого:

from django.shortcuts import render from django.http import HttpResponse def not_found(request): context = {'error': 'Page not found'} return render(request, '404.html', context, status=404) def json_response(request): context = {'data': {'name': 'John', 'age': 30}} return render(request, 'data.json', context, content_type='application/json')

Шаблон data.json для JSON ответа:

{ "name": "{{ data.name }}", "age": {{ data.age }} }

Результат выполнения кода:

{ "name": "John", "age": 30 }

Смотрите также

  • функция redirect,
    которая выполняет перенаправление на другой URL
  • функция render_to_string,
    которая рендерит шаблон в строку без создания HTTP-ответа
  • класс TemplateView,
    который используется для рендеринга шаблонов в классовых представлениях
  • атрибут template_name,
    который задает имя шаблона в классовых представлениях
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить