Разработка на Django
дистанционно
договорная
задача на Django. Доработка существующего продукта. Подготовка к выполнению задания Клонируйте репозиторий django-sprint1 на свой компьютер, в рабочую папку Dev. Репозиторий должен был появиться в вашем аккаунте на GitHub сразу после того, как вы открыли этот урок. Разверните и активируйте виртуальное окружение в папке Dev/django-sprint1, установите в виртуальное окружение зависимости из requirements.txt. Подсказки есть в уроке Из тренажёра на компьютер. Настройка VS Сode. Создайте новый Django-проект blogicum. В этом поможет урок Создание Django-проекта. Приложения. Должна получиться такая структура: Dev ??? django-sprint1/ ??? .vscode/ Служебная папка редактора кода (опционально, скрытая) ??? .git/ Служебная информация Git (скрытая) ??? html/ HTML-вёрстка для страниц и статика ??? tests/ Тесты Яндекс Практикума, проверяющие проект ??? venv/ Виртуальное окружение ??? blogicum/ <-- Рабочая папка с вашим кодом проекта ??? .flake8 Настройки тестов Практикума ??? .gitignore Список файлов и папок, которые не отслеживает Git ??? LICENSE Лицензия ??? pytest.ini Конфигурация тестов Практикума ??? README.md Описание проекта ??? requirements.txt Зависимости проекта Задание Создайте и зарегистрируйте приложения: pages — это приложение понадобится для работы со статическими страницами проекта; blog — тут будет происходить вся работа с публикациями пользователей. Описание процесса есть в уроке Создание Django-проекта. Приложения. Опишите маршруты и напишите соответствующие view-функции согласно таблице: Адрес Приложение Функция-обработчик Имя шаблона '' blog index index.html 'posts//' blog post_detail detail.html 'category//' blog category_posts category.html 'pages/about/' pages about about.html 'pages/rules/' pages rules rules.html Для каждого адреса установите namespaсe и name, совпадающие с именем приложения и view-функции соответственно. В файле views.py приложения blog разместите список posts. Каждый элемент этого списка — словарь, в котором хранится вся информация об отдельном посте. Информация из этого словаря должна будет выводиться на страницы проекта. Подобную работу вы уже делали в задании 3 урока Словарь контекста, ветвление и циклы в шаблонах. posts = [ { 'id': 0, 'location': 'Остров отчаянья', 'date': '30 сентября 1659 года', 'category': 'travel', 'text': '''Наш корабль, застигнутый в открытом море страшным штормом, потерпел крушение. Весь экипаж, кроме меня, утонул; я же, несчастный Робинзон Крузо, был выброшен полумёртвым на берег этого проклятого острова, который назвал островом Отчаяния.''', }, { 'id': 1, 'location': 'Остров отчаянья', 'date': '1 октября 1659 года', 'category': 'not-my-day', 'text': '''Проснувшись поутру, я увидел, что наш корабль сняло с мели приливом и пригнало гораздо ближе к берегу. Это подало мне надежду, что, когда ветер стихнет, мне удастся добраться до корабля и запастись едой и другими необходимыми вещами. Я немного приободрился, хотя печаль о погибших товарищах не покидала меня. Мне всё думалось, что, останься мы на корабле, мы непременно спаслись бы. Теперь из его обломков мы могли бы построить баркас, на котором и выбрались бы из этого гиблого места.''', }, { 'id': 2, 'location': 'Остров отчаянья', 'date': '25 октября 1659 года', 'category': 'not-my-day', 'text': '''Всю ночь и весь день шёл дождь и дул сильный порывистый ветер. 25 октября. Корабль за ночь разбило в щепки; на том месте, где он стоял, торчат какие-то жалкие обломки, да и те видны только во время отлива. Весь этот день я хлопотал около вещей: укрывал и укутывал их, чтобы не испортились от дождя.''', }, ] Создайте шаблоны страниц и разместите их на уровне проекта. Вёрстку шаблонов сделайте на основе html-файлов, которые хранятся в директории html. Подсказки и описание структуры файлов для директории templates есть в уроках спринта. Подключите статику. В репозитории, в директории html, лежат папки со статикой: css и img. Сохраните статику на уровне проекта и подключите её к шаблонам — подобно тому, как это описано в уроке Подключение стилей, картинок и скриптов к шаблонам. Вывод информации на страницы проекта На главную страницу проекта выведите полный список публикаций из словаря posts. В директории html есть уже свёрстанная главная страница проекта: index.html. Переделайте её в Django-шаблон и сохраните в директории для шаблонов проекта. Порядок вывода постов должен быть таким же, как в исходном файле index.html. Вёрстка отдельной страницы публикации подготовлена в файле html/detail.html. На эту страницу должен быть выведен полный текст поста. На страницу категории ('category//') посты выводить пока что не надо; выведите на эти страницы лишь значение category_slug из адреса. Например, для адреса http://127.0.0.1:8000/category/personal/ выведите personal; текст на этой странице должен быть таким: «Публикации в категории personal». Публикации должны передаваться в шаблоны в словаре контекста под ключом post. Не применяйте к дате публикации фильтр шаблонов date — это сейчас строка, а не объект даты. Шаблоны about.html и rules.html из директории html сохраните на уровне проекта и подключите к соответствующим view-функциям приложения pages. Проверка Вот так должен выглядеть в браузере результат вашей работы: После выполнения задания: Запустите тесты локально, на компьютере. В активированном виртуальном окружении через терминал из папки Dev/django-sprint1 выполните команду pytest. Если все тесты пройдены успешно, то можно отправлять проект на GitHub. Структура папок в вашем репозитории должна быть такой: django-sprint1/ ??? html/ Шаблоны для выполнения задания ??? tests/ Тесты Практикума, проверяющие проект ??? blogicum/ <-- Рабочая папка с вашим кодом ??? .flake8 Настройки тестов Практикума ??? .gitignore Список файлов и папок, скрытых от отслеживания Git ??? LICENSE Лицензия ??? pytest.ini Конфигурация тестов Практикума ??? README.md Описание проекта ??? requirements.txt Зависимости проекта Отправьте задание на проверку. На странице задания на вкладке ревью нажмите кнопку «Отправить новую версию». На учебной платформе запустятся автоматические тесты, которые проверят ваше задание. Если автоматические тесты пройдены успешно — ваш проект отправится на проверку человеку-ревьюеру. Скорее всего, он оставит комментарии и попросит внести правки. Задание считается выполненным, когда исправлены все замечания с пометкой «Надо исправить». Задание считается выполненным прекрасно, если вам удастся реализовать все рекомендации с пометкой «Можно лучше».
2026-06-07
Откликнуться