Финальный проект спринта: публикации для Блогикум (спринт 8)

Выполнен
Заказ
6614680
Раздел
Программирование
Предмет
Web-программирование
Антиплагиат
Не указан
Срок сдачи
20 Мар в 16:55
Цена
500 ₽
Блокировка
10 дней
Размещен
18 Мар в 09:53
Просмотров
47
Описание работы
Задание

Первым делом удалите из файла blog/views.py словарь posts. Он больше не понадобится, дальше будем работать по-настоящему, с базой данных.

Создайте модели проекта

В приложении blog потребуются следующие модели:

  • Post (Публикация)
  • Category (Тематическая категория)
  • Location (Географическая метка)
  • User (Пользователь, эту модель описывать не нужно, она встроена в Django)


Модель User встроена в Django и готова к работе. Сослаться на неё из другой модели можно так:

Скопировать код

PYTHON

from django.contrib.auth import get_user_model

...


User = get_user_model()


...


class Post(models.Model):

author = models.ForeignKey(

User,

on_delete=models.CASCADE

)

...


Когда структура базы данных будет готова, загрузите фикстуры из файла db.json.

Настройте панель администратора

Настройте админ-зону проекта так, чтобы можно было управлять созданием, изменением и удалением объектов моделей:

  • Category
  • Location
  • Post
Шаблоны

Новые HTML-шаблоны с вёрсткой лежат в папке templates. Перенесите их в соответствующую папку проекта (старые шаблоны удалите или сохраните где-нибудь вне проекта).

Скопировать код

Dev/

└── django_sprint3/

├── .vscode/

├── .git/

├── templates/ <-- Взять шаблоны тут.

├── tests/

├── venv/

├── blogicum/

| ├── blog/

| ├── pages/

| ├── static/

| ├── templates/ <-- Очистить эту папку и положить в неё новые шаблоны.

| ├── blogicum/

| ├── db.sqlite3

| └── manage.py

├── .flake8

├── .gitignore

├── LICENSE

├── pytest.ini

├── README.md

└── requirements.txt


В HTML-шаблонах, в тегах {{ }} указано, какая информация должна быть выведена в каждом конкретном месте шаблона.

View-функции и запросы к БД

Обновите код view-функций: настройте ORM-запросы так, чтобы на страницы проекта выводилась требуемая информация.

Содержимое страниц

Главная страница проекта

Выводятся пять последних публикаций.

На главной странице должны показываться только те публикации, у которых одновременно:

  • дата публикации — не позже текущего времени,
  • значение поля is_published равно True,
  • у категории, к которой принадлежит публикация, значение поля is_published равно True.

Страница категории

Выводятся только те публикации, которые

  • принадлежат выбранной категории,
  • значение поля is_published равно True,
  • дата публикации — не позже текущего времени.

Если у запрошенной категории значение поля is_published равно False — должна возвращаться ошибка 404.

Страница отдельной публикации

Выводится отдельная публикация, полученная по первичному ключу.

Запрос к странице публикации должен вернуть ошибку 404, если:

  • дата публикации — позже текущего времени
  • или значение поля is_published у запрошенной публикации равно False,
  • или у категории, к которой принадлежит публикация, значение поля is_published равно False.

Проверка

После выполнения задания:

  1. Запустите тесты локально, на компьютере. В активированном виртуальном окружении через терминал из папки Dev/django_sprint3 выполните команду pytest.

  2. Если все тесты пройдены успешно, то можно отправлять проект на GitHub. Структура папок в вашем репозитории должна быть такой:

Скопировать код

django_sprint3/

├── tests/ Тесты Практикума, проверяющие проект

├── blogicum/ <-- Рабочая папка с вашим кодом

├── .flake8 Настройки тестов Практикума

├── .gitignore Список файлов и папок, скрытых от отслеживания Git

├── LICENSE Лицензия

├── pytest.ini Конфигурация тестов Практикума

├── README.md Описание проекта

└── requirements.txt Зависимости проекта

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Время выполнения заказа:
4 минуты
Выполнен в срок
Отзыв о выполненном заказе
Отзыв эксперта о заказе
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир
Ошибка при загрузке заказов 1
×