Создание представлений Django

Читать первым в Telegram

Функция представления, или кратко “представление”, это просто функция Python, которая принимает веб-запрос и возвращает веб-ответ. Этим ответом может быть HTML-содержимое веб-страницы, перенаправление, ошибка 404, XML-документ, изображение и т.д. Например, вы используете представление для создания веб-страницы, обратите внимание, что вам нужно связать представление с URL, чтобы увидеть созданную веб-страницу.

В Django представления должны создаваться в файле views.py.

Простое представление

Мы создадим простое представление, чтобы сказать “Welcome to my app!”

Обратите внимание на следующее представление:

from django.http import HttpResponse

def hello(request):
    text = """<h1>welcome to my app !</h1>"""
    return HttpResponse(text)

В этом представлении мы используем HttpResponse для визуализации HTML (как вы, вероятно, заметили, мы написали HTML-код прямо в представлении). Чтобы увидеть это представление как страницу, нам нужно просто сопоставить его с URL-адресом (это будет обсуждаться в следующей главе).

Ранее мы использовали HttpResponse для визуализации HTML в представлении. Это не лучший способ визуализации веб-страниц. Django поддерживает паттерн MVT, поэтому для создания предыдущего представления в формате Django-MVT нам потребуется шаблон myapp/templates/hello.html.

И теперь наше представление будет иметь вид:

from django.shortcuts import render

def hello(request):
    return render(request, "myapp/template/hello.html", {})

Представления также могут принимать параметры:

from django.http import HttpResponse

def hello(request, number):
    text = "<h1>welcome to my app number %s!</h1>"% number
    return HttpResponse(text)

При переходе по-соответствующему URL на странице будет отображаться число, переданное в качестве параметра. Обратите внимание, что параметры будут передаваться через URL (это будет рассмотрено в следующей главе).

Источник: Django — Creating Views

Поддержать проект

Социальные сети проекта:

Подпишись, чтобы ничего не пропустить!