Некоммерческий, учебный проект кулинарного блога на Django и PostgreSQL.
- Регистрация и вход пользователя.
- Просмотр пользователем своего профиля: идентификатор, никнейм, статус, рейтинг и количество рецептов пользователя.
- Редактирование пользователем своего профиля - никнейм, электронная почта.
- Изменение пользователем своего пароля.
- Восстановление пользователем своего пароля по email (почтовый сервер не предустановлен, добавлять отдельно по своему усмотрению, для тестовых целей используется дефолтный вывод в терминал).
- Добавление пользователем нового рецепта.
- Редактирование пользователем своих рецептов.
- Получение списка всех пользователей (кроме заблокированных). Отдаются поля: никнейм, дата регистрации, дата последнего обновления профиля, статус и количество рецептов.
- Сортировка списка пользователей по алфавиту, по дате регистрации, по рейтингу и по количеству рецептов - по возрастанию и убыванию.
- Получение профиля любого пользователя: идентификатор, никнейм, статус и количество рецептов пользователя.
- Получение списка рецептов (кроме заблокированных). Отдаются поля: название, тип блюда, никнейм автора, дата публикации, статус, фотография, описание, теги, количество лайков.
- Фильтрация по типу блюда (категории: все рецепты/салат/первое/второе/выпечка/десерт/напиток).
- Сортировка списка рецептов во всех категориях по дате публикации, алфавиту, количеству лайков (рейтингу) - по возрастанию и убыванию.
- Пагинация списка пользователей и рецептов.
- Получение конкретного рецепта (все поля рецепта).
- Простановка лайка рецепту.
- Рейтинг пользователей на основе лайков их рецептов.
- Сортировка списка пользователей по рейтингу.
- Добавление рецепта в избранное.
- Удаление рецепта из избранного
- Получение списка избранных рецептов текущего пользователя.
- Сортировка избранного для текущего пользователя по категориям блюда.
- Получение списка избранных рецептов любого пользователя.
- Вкладка "Мои рецепты"
- Сортировка вкладки "Мои рецепты" по категориям блюда.
- Отображение топ-5 рецептов по рейтингу на главной странице сайта.
- Отображение всех рецептов конкретного пользователя, с сортировкой по категориям.
- Сортировка избранного для конкретного пользователя по категориям блюда.
- Теги.
- Сортировка рецептов по тегам.
- Отображение списка самых популярных тегов и всех тегов.
- Отображение списка понравившихся рецептов для текущего пользователя.
- Документация сайта.
- Авторизация администраторов по токену.
- Блокировка/разблокировка пользователя.
- Блокировка/разблокировка рецепта.
- Удаление пользователем своего рецепта.
- Удаление пользователем себя (со всей информацией и рецептами).
Чтобы запустить приложение, следуйте инструкции (для систем на базе Ubuntu и Python версии 3.10; для других систем или версий Python описанные шаги могут отличаться):
- Скачайте файлы и распакуйте в отдельную папку.
- В терминале перейдите в папку с файлами приложения.
- Создайте виртуальную среду при помощи команды
python3 -m venv env
, где env - название виртуальной среды - Активируйте созданную виртуальную среду при помощи команды
source env/bin/activate
, где env - название виртуальной среды - Установите библиотеки, необходимые для работы приложения, при помощи команды
pip install -r requirements.txt
- Данное приложение работает с базой данных PostgreSQL. Если в вашей системе ещё не был установлен PostgreSQL, то, после п.5 вам нужно будет создать нового пользователя в PostgreSQL. Если же у вас уже есть зарегистрированный пользователь, переходите к п. 7.
- Войдите в PostgreSQL как пользователь командой
psql -U userName
, где userName - имя Вашего пользователя, и создайте базу данных под любым именем, например test_db - командаcreate database test_db;
(запомните название базы данных: оно пригодится в п. 10). - Перейдите в подпапку
UsersRecipesDjango
, где находится файлsettings.py
, и в корне этой папки создайте файл.env
(командаtouch .env
в терминале). В данном файле будет храниться конфигурация подключения к базе данных и другая чувствительная информация. - Откройте файл
.env
любым текстовым редактором, например Sublime - командаsubl .env
в терминале. - Внесите в файл
.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
Этот пункт отвечает за настройку почтового сервера, использующегося для отправки электронной почты сайтом
(например, при восстановлении пароля).
В данном приложении не настроен отдельный почтовый сервер, поэтому используется дефолтный вывод в терминал.
- Сгенерируйте секретный ключ 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()
-
Сохраните файл
.env
-
Выйдите командой
cd ..
обратно в корневой каталог, в котором находится файлmanage.py
, и примените все миграции командойpython3 manage.py migrate
: это необходимо для корректного функционирования базы данных. -
Находясь в корневом каталоге, запустите приложение на локальном сервере - команда
python3 manage.py runserver
-
Для доступа к интерфейсу Django Admin создайте суперпользователя, введя в терминале команду
python3 manage.py createsuperuser
, перейдите к интерфейсу /admin (например localhost:8000/admin) и войдите с данными суперпользователя. -
Для доступа к документации перейдите к /admin/doc по ссылке (например localhost:8000/admin/doc/), либо нажав кнопку 'Documentation' в панели навигации интерфейса Django Admin.