Skip to content

JxSol/uptrader_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание для компании
ООО АпТрейдер (UpTrader)

Задача:

Нужно сделать django app, который будет реализовывать древовидное меню, соблюдая следующие условия:

  1. Меню реализовано через template tag
  2. Все, что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут.
  3. Хранится в БД.
  4. Редактируется в стандартной админке Django
  5. Активный пункт меню определяется исходя из URL текущей страницы
  6. Меню на одной странице может быть несколько. Они определяются по названию.
  7. При клике на меню происходит переход по заданному в нем URL. URL может быть задан как явным образом, так и через named url.
  8. На отрисовку каждого меню требуется ровно 1 запрос к БД Нужен django-app, который позволяет вносить в БД меню (одно или несколько) через админку, и нарисовать на любой нужной странице меню по названию. {% draw_menu 'main_menu' %}.
    При выполнении задания из библиотек следует использовать только Django и стандартную библиотеку Python. При решении тестового задания у вас не должно возникнуть вопросов. Если появляются вопросы, вероятнее всего, у вас недостаточно знаний. Задание выложить на гитхаб.

Решение:

  1. Предположительно, такие меню редактируются не часто и содержат не много данных. Всё, что требуется - это создание меню через админку и отрисовка в UI пользователя. Поэтому в данном случае было решено сделать модель Menu с JSONField, в котором и хранится вся структура меню.
  2. Была создана форма Node, для более удобной валидации пунктов меню при его создании.
  3. Был создан тег draw_menu, который встроен в весь проект, поэтому нет необходимости загружать его на страницах содержащих меню.
  4. Отрисовка меню и процесс его создания в админке реализован через JavaScript.

Запуск:

Создать виртуальное окружение:

python -m venv venv

Активировать виртуальное окружение:
Для Windows

.\venv\Scripts\activate

Для Linux

source venv/bin/activate

Установить зависимости:

pip install -r requirements.txt

Выполнить команду:

python manage.py fastrun

  • Зайдите в панель администратора http://127.0.0.1:8000/admin.
  • Логин: admin. Пароль: admin.
  • Создайте меню, вписав его название. После сохранения появится возможность построить его структуру.
  • Можете использовать как внешние, так и внутренние URL или имена URL в проекте, например, mario.
  • Для проверки раскрытия меню, создайте меню main_menu, в котором будет пункт с любым внутренним URL (например http://127.0.0.1:8000/test) и затем перейдите по этому адресу.

Зависимости:

Пакет Версия
Python 3.11
Django 4.1.7

About

Testing task for UpTrader company

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors