Различные типы данных приложения Django, такие как содержимое HTML, данные XML, данные JSON, изображение, ошибка 404 и т. д., Передаются в шаблон через представление Django. Каждое представление создается для определенной цели и связано с определенным шаблоном. Данные представления могут быть сгенерированы пользователем через HTML-форму или из базы данных или бизнес-логики. Представления Django могут быть созданы с использованием метода класса python или функции python. Представления на основе классов содержат много функций по сравнению с представлениями на основе функций. Для этого большинство приложений Django используют представления на основе классов для представления данных приложения Django. В этой статье были объяснены способы создания представления на основе функций и представлений на основе классов.
Перед тем, как практиковаться в примерах этого руководства, вам необходимо выполнить следующие задачи:
A. Чтобы создать приложение Django с именем viewapp, выполните следующую команду:
$ python3 manage.py startapp viewapp
B. Чтобы создать пользователя для доступа к базе данных Django, выполните следующую команду. Если вы создали пользователя раньше, пропустите эту часть:
$ python3 manage.py createsuperuser
C. Добавьте имя приложения в часть INSTALLED_APP файла settings.py.
D. Создайте папку с именем templates внутри папки viewapp и укажите местоположение шаблона приложения в части TEMPLATES файла settings.py.
TEMPLATES = [ { …. 'DIRS': ['/home/fahmida/django_pro/viewapp/templates'], …. }, ]
Откройте файл views.py из папки viewapp и замените содержимое этого файла следующим скриптом. Функция index() используется в скрипте для создания HTML-содержимого, которое будет отправлено в браузер с помощью метода HttpResponse(). Здесь текущая дата и время системы будут считаны с помощью функции today(), а текущее значение даты будет сгенерировано перед отправкой в браузер.
Views.py
# Импорт модуль даты читать текущую дату from datetime import date # Импортируйте HttpResponse модуль для передачи данных с целью шаблон from django.http import HttpResponse # Определите функцию для создания индекса def index(request): # Прочтите текущую дату today = date.today() # Устанавливаем статические данные для представления content = "<center><h1 style='color:green'>Добро пожаловать в AndreyEx</h1><h2>" content += "Today is " + today.strftime("%B") + " " + today.strftime("%d") + ", " + str(today.year) + "</h2></center>" # Отправляем контент в браузер return HttpResponse(content)
Измените содержимое файла urls.py с помощью следующего сценария. В сценарии путь ‘welcome/’ определен для вызова функции index(), которая отправит HTML-содержимое в файл шаблона.
urls.py
# Импортировать модуль пути from django.urls import path # Импортировать модуль представления from viewapp import views # Вызвать метод индекса для отображения содержимого urlpatterns = [ # Определить путь для вызова функции index() path('welcome/', views.index) ]
Запустите следующий URL-адрес из браузера, который покажет следующий результат. На выходе отображаются форматированный текст заголовка и текущее значение даты.
http://localhost:8000/welcome/
Создайте файл views2.py внутри папки viewapp и добавьте следующий скрипт. Класс MyView определен в сценарии, который содержит метод с именем get(). Переменная списка с именем listdata объявляется в сценарии для создания списка из 10 случайных чисел. Значения списка будут переданы в шаблон через метод HttpResponse() при вызове этого представления. Модуль random был использован в скрипте для генерации случайного целого числа на каждой итерации цикла for с помощью функции randint().
views2.py
# Импортируйте модуль HttpResponse для отправки данных из представления в шаблон from django.http import HttpResponse # Импортировать модуль представления from django.views import View # Импортировать случайный модуль import random # Определить класс для представлений на основе class MyView(View): def get(self, request): # Объявить переменную списка listdata = [] # Добавить первый элемент списка listdata.append('<center><h2>список из 10 случайных чисел:</h2>') # Итерация цикла 10 раз for n in range(10): # Генерация случайного числа от 1 до 50 random_number = random.randint(1, 50) # Добавить случайное число в список listdata.append(random_number) # Добавить элемент разрыва в список listdata.append('<br/>') # Добавить последний элемент списка listdata.append('</center>') # Отправляем значения списка в браузер return HttpResponse(listdata)
Измените содержимое файла urls.py с помощью следующего сценария. В сценарии определен путь “number/” для вызова метода MyView.as_view(), который отправит данные списка в файл шаблона.
urls.py
# Импортировать модуль пути from django.urls import path # Импортировать модуль просмотра from viewapp import views # Импортировать класс MyView from viewapp.views2 import MyView # Вызвать метод get класса urlpatterns = [ # Определить путь для вызова функции index() path('welcome/', views.index), # Определить путь для вызова метода MyView.as_view() path('number/', MyView.as_view()), ]
Запустите следующий URL-адрес из браузера, который покажет следующий результат. Номера вывода будут изменены, если страница обновится, потому что каждый номер списка будет генерироваться случайным образом.
http://localhost:8000/number/
Вывод веб-приложения зависит от сценария файла представления, который является основной частью любого веб-приложения. Представления на основе функций в основном используются в ранней версии приложения Django, а теперь представления на основе классов используются в большинстве приложений Django. В этой статье показаны способы создания представлений обоих типов, чтобы помочь новым пользователям Django создавать представления на основе своего приложения.