Есть 4 модели: Профессора, Студента, Курса и Урока. Главная страница показывает общее количество курсов, далее можно зайти посмотреть список курсов, там их добавить, зайти внутрь курса отредактировать или удалить.
Для работы необходимо указать SECRET_KEY
в settings.py
и собрать статику в папке static
командой
python manage.py collectstatic
Для работы очереди задач надо установить Redis
и питоновскую библиотеку rq
. Также в settings.py
в переменных FROM_EMAIL
, ADMIN_EMAIL
надо указать почту админа и от какой почты слать письма.
Сама функция не шлет письма, а просто вводит на экран сообщение и спит 5 секунд.
Очередь задач вызывается в методе post
вьюхи ContactView
в файле school/views.py
В отдельном приложении frontend
сделана сборка вебпаком index.js
. Сорс в frontend/src
, собирается в project-static/frontend
. В навигационном баре есть ссылка Frontend
.
Сделан свой пользователь для авторизации. Добавлены два поля, дающие возможность указать студент и/или преподователь. При регистрации По умолчанию пользователю устанавливается значение студента, указать, что это преподаватель может суперпользователь в админке. Преподователи могут добавлять курсы и уроки. И студент, и преподователь могут записаться на курс (кнопка Submit
на странице курса).
Есть две ссылки в API: api/school/courses/
, api/school/lessons/
. Авторизация по сессии или по токену. Токен можно сгенерить в профиле. В api/school/courses/
виден список всех курсов, у каждого курса также отображаются студенты, преподаватели и уроки. В api/school/lessons/
показываются все уроки и с каким курсом связаны. Так же уроки можно фильтровать по айдишнику и имени курса, course_id
и course
соответственно.
Тесты API находятся в файле courses/tests.py
.
Ссылка на GraphQL есть в навигиционном баре.
До
После
- Создать проект "Обучающий сайт". По нему будут задания до конца курса, сначала backend потом frontend. Рекомендуется создать для проекта отдельный репозиторий
- Придумать тему (чему будем обучать на сайте) можно любую какая вам наиболее интересна.
- Примерное описание работы сайта: Сайт будет похож на OTUS + дополнительный функционал в зависимости от темы. На нем будут курсы, категории, преподаватели, занятия, расписание, ... + доп. функционал в зависимости от выбранной темы. Будут как классические страницы (созданные на сервере), так и api в json
- Необходимо создать модели данных (Преподаватель, студент, курс, расписание, ...). Можно не все сразу, а какую то часть и постепенно добавлять новые
- Создать связи между моделями
- Сделать миграции
- Настроить стандартную админку
- Заполнить базу некоторыми реальными или тестовыми данными
В проекте добавляем страницы (у нас будут как классические страницы с рендерингом на сервере, так и api с рендерингом на клиенте) 9. Пока добавляем классические страницы с рендерингом на сервере 10. Добавить страницу для просмотра списка курсов 11. Добавить страницу для просмотра одного курса 12. Добавить страницы для создания, удаления, редактирования курса 13. Дополнительно можно добавить любой полезный функционал 14. Так же в проект рекомендуется добавить необходимые базовые и включенные шаблоны
Рекомендуется все view делать с использованием CBV
-
По возможности покрыть проект тестами, как методов моделей, так и view (для генерации фейковых данных удобно использовать фабрики)
-
Сдать сайт в виде ссылки на репозиторий (базу используем пока тестовую sqlite) сам файл с базой в репозиторий рекомендуется не заливать
-
Рекомендуется добавить в репозиторий файл readme с кратким описанием работы системы
-
Если будет возможность запуска в docker будет вообще супер Критерии оценки: Задание считается выполненным, когда: в проекте есть минимум 2 модели данных, проходят миграции (python manage.py migrate), минимум 2 модели (не считая модель пользователя), добавлены в стандартную админку, есть рабочие страницы для списка курсов и одного курса - 10 баллов