Django — это мощный веб-фреймворк с открытым исходным кодом на базе Python, который упрощает процесс создания и управления веб-сайтами и веб-приложениями. Приложения Django масштабируемы, высокопроизводительны и безопасны. Он также поставляется с действительно хорошей документацией по каждой отдельной части фреймворка.
В нашей серии статей о Django, мы изучали Django, создавая пример веб-сайта с базовыми функциями блога. В этом руководстве мы рассмотрим шаги по созданию примера представления (view) для нашего приложения Django.
Предварительные требования
Чтобы следовать этому руководству, вам понадобятся следующие компоненты.
- Сервер Ubuntu с правильными настройками. Узнайте больше о настройке сервера Ubuntu.
- Правильно настроенная среда разработки Python.
- Сервер баз данных, например, MySQL. В этом руководстве подробно описывается установка и настройка MySQL на сервере Ubuntu.
Это руководство является продолжением нашей серии статей о Django. Для начала будет полезно ознакомиться с предыдущими руководствами по настройке Django, установке соединения с базой данных Django, созданию моделей, и включению административного интерфейса Django.
В этом руководстве мы покажем, как создавать представления Django, которые позволят веб-приложению правильно обрабатывать веб-запросы и возвращать соответствующий ответ. Как описано в официальной документации Django, веб-ответ может представлять собой HTML-содержимое веб-страницы, перенаправление или ошибку HTTP. Нет фиксированного места для хранения функций представлений, если они находятся в путях Python. Однако существуют популярные соглашения по именованию и размещению файлов. Это руководство будет следовать этим соглашениям.
Шаг 1. Активация виртуального окружения
Django лучше всего работает в виртуальном окружении Python. Наше приложение Django sample_app создано в выделенном виртуальном окружении. Сначала активируйте виртуальное окружение:
|
1 2 3 |
cd sample_app/ . sample_app_env/bin/activate |
Шаг 2. Создание функций представлений
Перейдите в наш каталог random_app в котором находятся модели для нашего сайта-блога:
|
1 |
cd random_app/ |
Здесь файл views.py будет содержать код, необходимый для создания наших представлений. Откройте его в текстовом редакторе:
|
1 |
nano views.py |

Нам нужна функция render() из библиотеки django.shortcuts поэтому первая строка остается прежней. Функция render() функция помогает объединить шаблон и контекст для возврата в виде соответствующего объекта HttpResponse .
Первое представление будет приветствовать пользователей, переходящих на главную страницу. Нам нужно будет импортировать функцию HttpResponse() из библиотеки Django http:
|
1 2 3 4 5 6 7 8 |
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse(Вы оказались на приветственной страницеpage') def individual_post(request): return HttpResponse('Отдельные записи будут появляться здесь') |

Сохраните файл и закройте редактор.
Шаг 3. Сопоставление URL-адресов с представлениями
В данный момент для этих функций не назначен URL-адрес, поэтому они недоступны. Нам нужно добавить еще один блок urlpatterns внутри файла конфигурации URL. В Python он называется файлом URLconf (конфигурации URL).
Django должен определить корневой модуль URLconf . Затем он будет искать в urlpatterns, которые содержат все шаблоны URL в виде списка. Затем Django просматривает файл, пока не найдет первое совпадение. Как только совпадение найдено, Django ищет связанное с ним представление. Эта функция представления получит данные, связанные с шаблоном URL, и объект HttpRequest . Ошибка на любом этапе этого процесса приведет к перенаправлению на представление обработки ошибок.
Откройте файл urls.py приложения random_app в текстовом редакторе:
|
1 |
nano urls.py |
Введите следующий код:
|
1 2 3 4 5 6 7 |
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('post/', views.individual_post, name='individual_post') ] |

Сохраните файл и закройте редактор.
После этого нам также потребуется включить путь к файлу URL в sample_app директории URLconf. В противном случае наше приложение Django его не распознает. Это связано с тем, что URLconf для sample_app задан как ROOT_URLCONF в файле настроек.
Перейдите в директорию нашего приложения sample_app:
|
1 |
cd sample_app/sample_app/sample_app/ |
![]()
Откройте файл urls.py в текстовом редакторе:
|
1 |
nano urls.py |

Введите следующий код в файл:
|
1 2 3 4 5 6 7 |
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('random_app.urls')) ] |

Давайте протестируем наши изменения. Запустите сервер приложения Django на localhost:8000:
|
1 |
python manage.py runserver localhost:8000 |

Перейдите по URL-адресу:
|
1 |
localhost:8000 |

Проверьте URL-адрес для публикации:
|
1 |
localhost:8000/posts |
Шаг 4. Создание публикации в блоге
Мы настроили шаблоны URL и изучили их работу. Пришло время добавить тестовый блог и посмотреть на результат.
В панели администратора перейдите на страницу random_app :
|
1 |
localhost:8000/admin/random_app/ |

Нажмите ссылку +Add в строке Posts :

На новой веб-странице откроется форма, состоящая из следующих полей.
- Title: Заголовок публикации в блоге.
- Slug: Это часть веб-адреса, содержащая понятные человеку ключевые слова. Как правило, слаги (slugs) создаются на основе заголовка публикации.
- Content: Текст публикации в блоге.
- Author: Соответствующее имя пользователя.
Нажмите SAVE , чтобы сохранить публикацию:

Шаг 5. Отображение данных в базе данных
В следующем разделе мы будем работать с нашей базой данных. Войдите в MySQL под пользователем, выделенным для Django:
|
1 |
mysql -u sample_app_user -p |

Давайте проверим, была ли наша публикация успешно зарегистрирована в базе данных:
|
1 |
USE sample_app_data; |

|
1 |
SELECT * FROM random_app_post; |

Вуаля! Публикация успешно зарегистрирована! Теперь вы можете выйти из оболочки MySQL.
Шаг 6. Дополнительные настройки представлений
Мы можем сделать еще кое-что с нашими представлениями. Откройте файл в текстовом редакторе:
|
1 |
nano views.py |
Код должен выглядеть следующим образом:
|
1 2 3 4 5 6 7 8 9 10 |
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) |

Здесь мы добавили дополнительную инструкцию import для Post. Строка в кавычках из HttpResponse также заменяется данными из нашей публикации в блоге. Для ссылки на данные мы используем ID публикации со связанным объектом. ID сохраняется в переменной recent_post. Теперь мы можем извлекать определенные поля объекта, добавляя имя поля через точку.
После внесения изменений давайте проверим их. Запустите сервер Django:
|
1 |
python manage.py runserver localhost:8000 |

Теперь перейдите на страницу Posts :
|
1 |
localhost:8000/posts |

Там должна отображаться созданная нами публикация.
Шаг 7. Выход из проекта
Чтобы выйти из сервера Django, нажмите Ctrl + C в терминале. Чтобы деактивировать виртуальное окружение Python, выполните следующую команду:
|
1 |
deactivate |
Заключение
В этом руководстве мы успешно продемонстрировали создание представлений, сопоставление шаблонов URL-адресов и отображение текстов на веб-странице из базы данных random_app в Django.Это фундаментальные концепции Django, которые необходимо понять и освоить.
Вот дополнительные ресурсы, которые помогут вам создавать приложения Django и управлять ими:
- Создание приложения Django с подключением к базе данных: руководство
- Создание приложения Django и Gunicorn с помощью Docker на Ubuntu
- Как защитить и масштабировать приложение Django с помощью Docker, Nginx и Let’s Encrypt
Приятной работы!

Комментарии
Комментариев пока нет. Будьте первым.