Skip to content

Некоммерческий, учебный проект кулинарного блога на Django и PostgreSQL.

Notifications You must be signed in to change notification settings

Odyvia42/UsersRecipes-Django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UsersRecipes-Django

Некоммерческий, учебный проект кулинарного блога на Django и PostgreSQL.

На данный момент реализован следующий функционал:

Личный профиль пользователя

  1. Регистрация и вход пользователя.
  2. Просмотр пользователем своего профиля: идентификатор, никнейм, статус, рейтинг и количество рецептов пользователя.
  3. Редактирование пользователем своего профиля - никнейм, электронная почта.
  4. Изменение пользователем своего пароля.
  5. Восстановление пользователем своего пароля по email (почтовый сервер не предустановлен, добавлять отдельно по своему усмотрению, для тестовых целей используется дефолтный вывод в терминал).
  6. Добавление пользователем нового рецепта.
  7. Редактирование пользователем своих рецептов.

Пользовательский интерфейс.

  1. Получение списка всех пользователей (кроме заблокированных). Отдаются поля: никнейм, дата регистрации, дата последнего обновления профиля, статус и количество рецептов.
  2. Сортировка списка пользователей по алфавиту, по дате регистрации, по рейтингу и по количеству рецептов - по возрастанию и убыванию.
  3. Получение профиля любого пользователя: идентификатор, никнейм, статус и количество рецептов пользователя.
  4. Получение списка рецептов (кроме заблокированных). Отдаются поля: название, тип блюда, никнейм автора, дата публикации, статус, фотография, описание, теги, количество лайков.
  5. Фильтрация по типу блюда (категории: все рецепты/салат/первое/второе/выпечка/десерт/напиток).
  6. Сортировка списка рецептов во всех категориях по дате публикации, алфавиту, количеству лайков (рейтингу) - по возрастанию и убыванию.
  7. Пагинация списка пользователей и рецептов.
  8. Получение конкретного рецепта (все поля рецепта).
  9. Простановка лайка рецепту.
  10. Рейтинг пользователей на основе лайков их рецептов.
  11. Сортировка списка пользователей по рейтингу.
  12. Добавление рецепта в избранное.
  13. Удаление рецепта из избранного
  14. Получение списка избранных рецептов текущего пользователя.
  15. Сортировка избранного для текущего пользователя по категориям блюда.
  16. Получение списка избранных рецептов любого пользователя.
  17. Вкладка "Мои рецепты"
  18. Сортировка вкладки "Мои рецепты" по категориям блюда.
  19. Отображение топ-5 рецептов по рейтингу на главной странице сайта.
  20. Отображение всех рецептов конкретного пользователя, с сортировкой по категориям.
  21. Сортировка избранного для конкретного пользователя по категориям блюда.
  22. Теги.
  23. Сортировка рецептов по тегам.
  24. Отображение списка самых популярных тегов и всех тегов.
  25. Отображение списка понравившихся рецептов для текущего пользователя.
  26. Документация сайта.

В разработке

  1. Авторизация администраторов по токену.
  2. Блокировка/разблокировка пользователя.
  3. Блокировка/разблокировка рецепта.
  4. Удаление пользователем своего рецепта.
  5. Удаление пользователем себя (со всей информацией и рецептами).

Инструкция по установке

Чтобы запустить приложение, следуйте инструкции (для систем на базе Ubuntu и Python версии 3.10; для других систем или версий Python описанные шаги могут отличаться):

  1. Скачайте файлы и распакуйте в отдельную папку.
  2. В терминале перейдите в папку с файлами приложения.
  3. Создайте виртуальную среду при помощи команды python3 -m venv env , где env - название виртуальной среды
  4. Активируйте созданную виртуальную среду при помощи команды source env/bin/activate , где env - название виртуальной среды
  5. Установите библиотеки, необходимые для работы приложения, при помощи команды pip install -r requirements.txt
  6. Данное приложение работает с базой данных PostgreSQL. Если в вашей системе ещё не был установлен PostgreSQL, то, после п.5 вам нужно будет создать нового пользователя в PostgreSQL. Если же у вас уже есть зарегистрированный пользователь, переходите к п. 7.
  7. Войдите в PostgreSQL как пользователь командой psql -U userName, где userName - имя Вашего пользователя, и создайте базу данных под любым именем, например test_db - команда create database test_db; (запомните название базы данных: оно пригодится в п. 10).
  8. Перейдите в подпапку UsersRecipesDjango, где находится файл settings.py, и в корне этой папки создайте файл .env (команда touch .env в терминале). В данном файле будет храниться конфигурация подключения к базе данных и другая чувствительная информация.
  9. Откройте файл .env любым текстовым редактором, например Sublime - команда subl .env в терминале.
  10. Внесите в файл .env следующие строки:
# Секретный ключ Django
SECRET_KEY= сгенерировать самостоятельно, см. пункт 11.

# Информация для входа в базу данных
DB_NAME= название базы данных, которую вы создали в п.7
DB_USER= логин вашего пользователя PostgreSQL
DB_PASSWORD= пароль вашего пользователя PostgreSQL
DB_HOST= по умолчанию можно использовать localhost либо заменить на любой другой
DB_PORT= по умолчанию порт 5432, можно заменить на любой другой

# Почтовый сервер
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
Этот пункт отвечает за настройку почтового сервера, использующегося для отправки электронной почты сайтом 
(например, при восстановлении пароля). 
В данном приложении не настроен отдельный почтовый сервер, поэтому используется дефолтный вывод в терминал.
  1. Сгенерируйте секретный ключ Django для поля SECRET_KEY. Для этого в терминале:
  • запустите оболочку Python командой python3
  • импортируйте функцию get_random_secret_key() командой from django.core.management.utils import get_random_secret_key
  • сгенерируйте рандомный ключ функцией get_random_secret_key()
  • скопируйте полученное значение (без кавычек) и вставьте в поле SECRET_KEY в файле .env
  • выйдите из оболочки Python командой quit()
  1. Сохраните файл .env

  2. Выйдите командой cd .. обратно в корневой каталог, в котором находится файл manage.py, и примените все миграции командой python3 manage.py migrate: это необходимо для корректного функционирования базы данных.

  3. Находясь в корневом каталоге, запустите приложение на локальном сервере - команда python3 manage.py runserver

  4. Для доступа к интерфейсу Django Admin создайте суперпользователя, введя в терминале команду python3 manage.py createsuperuser, перейдите к интерфейсу /admin (например localhost:8000/admin) и войдите с данными суперпользователя.

  5. Для доступа к документации перейдите к /admin/doc по ссылке (например localhost:8000/admin/doc/), либо нажав кнопку 'Documentation' в панели навигации интерфейса Django Admin.

About

Некоммерческий, учебный проект кулинарного блога на Django и PostgreSQL.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published