Введение
Если вы следили за нашей серией статей о разработке на Django, то вы успешно создали приложение Django, позволяющее пользователям с правами администратора добавлять комментарии и публикации через панель управления интерфейса администратора Django. Вы также настроили сохранение данных с помощью моделей решения объектно-реляционного сопоставления Django и MySQL.
В этом руководстве мы создадим представления Django, которые позволят нашему веб-приложению корректно обрабатывать веб-запросы и возвращать необходимые веб-ответы. Как определено в документации Django, веб-ответ может представлять собой HTML-содержимое веб-страницы, перенаправление или ошибку HTTP (например, 404). Технически код функций представления может находиться где угодно в вашем проекте, если он находится в вашем пути Python. Однако существуют некоторые общепринятые соглашения по именованию и размещению файлов, содержащих эти функции представления, и мы будем следовать этим шагам.
После того, как вы выполните шаги, описанные в этом руководстве, ваш сайт-блог Django загрузит последнюю публикацию на ваш IP-адрес или домен/URL-адрес публикации.
Предпосылки
Это руководство является частью серии «Разработка Django» и ее продолжением.
Если вы не следили за этой серией, мы делаем следующие предположения:
- У вас установлен Django версии 4 или выше.
- Вы подключили свое приложение Django к базе данных.
- Вы работаете с операционной системой на базе Unix, предпочтительно с облачным сервером Ubuntu 22.04, поскольку именно на этой системе мы проводили тестирование.
- Вы настроили интерфейс управления Django.
Поскольку это руководство в основном касается представлений Django, вы сможете следовать ему, даже если у вас другая настройка.
Шаг 1 — Создание функций отображения
В терминале сначала необходимо перейти в соответствующий каталог и активировать виртуальную среду Python. Если вы следовали этой серии, вы можете ввести следующие команды. Важно всегда использовать среду программирования Python при разработке приложения, чтобы гарантировать, что ваш код будет изолирован и будет работать с правильными настройками.
cd ~/my_blog_app
. env/bin/activateТеперь, когда ваша виртуальная среда включена, давайте перейдем в каталог блога сайта, где откроем файл Python и создадим нашу первую функцию представления.
cd ~/my_blog_app/blog/blogsiteОткройте файл views.py для редактирования с помощью nano или другого текстового редактора по вашему выбору.
nano views.pyПосле открытия файла он должен быть заполнен кодом, похожим на этот:
from django.shortcuts import render
# Create your views here.Мы сохраняем оператор import, который импортирует функцию render() из библиотеки django.shortcuts. Функция render() позволяет нам комбинировать шаблон и текст для возврата соответствующего объекта HttpResponse. Имейте это в виду, поскольку при создании каждого представления мы отвечаем за создание, заполнение и возврат HttpResponse.
Далее мы добавим первое представление, приветствующее пользователей на главной странице. Импортируем функцию HttpResponse() из библиотеки http Django. С помощью этой функции мы отправим текст, который будет отображаться при запросе веб-страницы.
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, welcome to the index page.')После этого мы добавим еще одну функцию, которая отображает отдельные посты, которые мы собираемся создать позже в этом уроке.
...
def individual_post(request):
return HttpResponse('Hi, this is where an individual post will be.')Наш окончательный файл views.py теперь будет выглядеть так.
from django.http import HttpResponse
from django.shortcuts import render
def index(request):
return HttpResponse('Hello, welcome to the index page.')
def individual_post(request):
return HttpResponse('Hi, this is where an individual post will be.')Закончив редактирование файла, сохраните его и выйдите. В nano можно нажать CTRL и X, затем Y, а затем ENTER.
В настоящее время у этих функций нет конкретного URL-адреса, на который они указывают, поэтому нам нужно добавить его в блок шаблонов URL в файле конфигурации URL. После добавления представлений давайте сопоставим им URL-адреса через этот файл конфигурации, чтобы мы могли просматривать созданные нами страницы.
Шаг 2 — Показывать URL-адреса для представлений
С помощью Django мы можем создавать собственные URL-адреса для использования в нашем приложении. Это делается на чистом Python с помощью файла, который обычно называют URLconf или «файлом конфигурации URL».
Чтобы отобразить веб-страницу, Django сначала должен определить корневой модуль URLconf, который будет использоваться, а затем найти шаблоны URL — структуру данных списка, содержащую все шаблоны URL. Затем Django перебирает каждый шаблон URL, пока не найдёт первое совпадение. При обнаружении совпадения Django находит соответствующее представление, и эта функция представления получает данные для шаблона URL и объект HttpRequest. В случае сбоя на каком-либо этапе этого процесса отображается представление с обработкой ошибок.
В этом разделе мы будем работать с двумя разными файлами urls.py в двух разных каталогах нашего приложения.
Перейдя в каталог ~/my_blog_app/blog/blogsite, откройте файл urls.py (также известный как файл URLconf) для редактирования. Для редактирования файла мы будем использовать nano.
nano urls.pyИзмените файл так, чтобы он выглядел как файл ниже со списком шаблонов URL.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('post/', views.individual_post, name='individual_post')
]После завершения добавления строк выше сохраните и закройте файл.
При обновлении файла URLconf каталога блога мы помещаем его в URLconf каталога блога, иначе он не будет распознан. Это необходимо, поскольку в нашем файле конфигурации он задан как ROOT_URLCONF. Это означает, что Django будет искать шаблоны URL в URLconf каталога блога.
Чтобы включить URLconf вашего блога в URLconf вашего блога, вам нужно перейти в этот каталог.
cd ~/my_blog_app/blog/blogОказавшись там, вы можете открыть файл URLconf с помощью nano или другого текстового редактора по вашему выбору.
nano urls.pyВ этом файле мы добавляем следующие строки, чтобы включить файл /blogsite/urls.py, с которым мы только что работали, показанный во второй строке.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blogsite.urls'))
]Сохраните и закройте файл.
Теперь откроем веб-браузер, чтобы перейти по созданным нами URL-адресам и убедиться, что они отображают текст, добавленный в представления. Нам нужно перейти в родительский каталог, чтобы получить доступ к файлу manager.py, содержащему приложение Django.
cd ..Выполните следующую команду. Вы можете заменить 0.0.0.0 на свой IP-адрес, указанный ниже.
python manage.py runserver 0.0.0.0:8000В веб-браузере перейдите на свой IP-адрес, порт 8000:
your-server-ip:8000Вы получите веб-страницу, похожую на следующую:
Затем перейдите по следующему адресу:
your-server-ip:8000/post/
Отсюда должна открыться следующая веб-страница:
Теперь, когда мы убедились, что два файла urls.py работают и данные показывают нам именно то, что мы ожидали, давайте добавим в наш блог некоторые реальные данные.
Шаг 3 — Создайте запись в блоге
Теперь, когда вы понимаете основы работы шаблонов и представлений URL, давайте добавим запись в блог и отобразим ее на веб-странице вместо текста, который мы закодировали в файлах Python.
Мы создадим публикацию через страницу администратора, которую мы настроили ранее. Пока ваш сервер обслуживает приложение Django, с помощью веб-браузера перейдите на страницу администратора блога по следующему адресу:
your-server-ip:8000/admin/blogsite/В интерфейсе нажмите ссылку + Добавить, расположенную в строке «Записи», чтобы заполнить базу данных примером записи блога.
Нажав на ссылку, вы получите форму ввода, подобную представленной ниже:
Чтобы добавить публикацию, перейдите на эту страницу. Кроме того, вы можете редактировать публикации, используя ссылку «Редактировать».
В форме вы можете редактировать следующие поля:
- Заголовок: Добавьте здесь желаемое название записи в блоге, например, «Моя первая запись в блоге».
- SLUG: Это часть URL-адреса, которая идентифицирует допустимый элемент веб-адреса с понятными человеку ключевыми словами. Обычно берётся из заголовка страницы, поэтому в данном случае можно использовать my-first-blog-post.
- СОДЕРЖАНИЕ: Это текст вашей записи в блоге. В данном примере мы просто добавим «Hello, World!», но здесь можно использовать больше слов.
- АВТОР: Добавьте здесь своё имя или соответствующее имя пользователя. Мы будем использовать имя «Сами».
Заполните форму записи в блоге так, как считаете нужным для целей тестирования.
После добавления образца данных на страницу нажмите кнопку «СОХРАНИТЬ». Вы увидите следующую страницу подтверждения:
Поздравляем! Вы создали свою первую запись в блоге!
Далее проверим, была ли добавлена строка в базу данных MySQL, содержащую данные, которые мы только что ввели в интерфейс управления.
Шаг 4 – Отображение данных базы данных
На этом этапе нам нужно перейти в MySQL, поэтому остановите текущий серверный процесс через терминал, нажав CTRL + C, а затем откройте интерпретатор MySQL. Для базы данных нашего приложения Django используется имя пользователя djangouser, но убедитесь, что вы используете имя пользователя, соответствующего вашему проекту.
mysql -u djangouserКак только вы увидите командную строку MySQL, перейдите к базе данных blog_data (или любой другой базе данных, подходящей для вашего проекта):
use blog_data;Затем отобразите содержимое таблицы blogsite_post.
select * from blogsite_post;Вы получите вывод, аналогичный приведенному ниже, который должен отображать информацию, добавленную вами в интерфейс администратора.
Output
+----+--------------------+--------------------+---------------+----------------------------+--------+
| id | title | slug | content | created_on | author |
+----+--------------------+--------------------+---------------+----------------------------+--------+
| 1 | My First Blog Post | my-first-blog-post | Hello, World! | 2020-05-14 00:30:03.186564 | Sammy |
+----+--------------------+--------------------+---------------+----------------------------+--------+
1 row in set (0.00 sec)Как показано в выводе, есть строка с данными записи, которые мы добавили. Теперь давайте добавим эти данные в функцию просмотра записей. Для выхода из интерпретатора MySQL используйте сочетание клавиш CTRL + D.
Перейдите к местоположению файла views.py в приложении блога вашего сайта.
cd ~/my_blog_app/blog/blogsiteТеперь откройте файл, чтобы мы могли добавить новую информацию.
nano views.pyОтредактируйте файл, как показано ниже.
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post
def index(request):
return HttpResponse('Hello, welcome to the index page.')
def individual_post(request):
recent_post = Post.objects.get(id__exact=1)
return HttpResponse(recent_post.title + ': ' + recent_post.content)В коде выше мы добавили дополнительный оператор импорта для Post. Мы также удалили строку в кавычках из HttpResponse и заменили её данными записи нашего блога. Чтобы обратиться к данным конкретного объекта, мы используем идентификатор записи блога, связанный с отображаемым объектом, и сохраняем этот идентификатор в переменной last_post. Затем мы можем извлечь нужные поля из этого объекта, добавив к ним точку-разделитель.
После сохранения и закрытия файла перейдите в папку с файлом manager.py, чтобы запустить приложение Django.
cd ~/my_blog_app/blog
python manage.py runserver 0.0.0.0:8000В веб-браузере перейдите по следующему адресу:
your-server-ip:8000/post/
Здесь мы увидим внесённые нами изменения. Страница будет выглядеть примерно так: на ней будет отображаться текст, который вы добавили в публикацию.
Завершив проверку страницы, нажмите CTRL + C в терминале, чтобы остановить процесс выполнения.
Чтобы отключить среду разработки, вы можете ввести команду disable, а затем выйти из сервера.
Результат
В этом уроке мы создали представления, сопоставили шаблоны URL-адресов и отобразили текст на веб-странице из базы данных записей нашего блога.
В следующем уроке мы расскажем, как создать более эстетичный шаблон Django с помощью HTML. До сих пор в этой серии рассматривались модели и представления Django. Шаблоны — это последний важный элемент в основе приложения Django.
















