Code Monkey home page Code Monkey logo

uptrader_testcase's Introduction

uptrader_testcase

Тестовое задание на позицию Junior Backend Developer

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

  1. Меню реализовано через template tag;

  2. Все что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут;

  3. Хранится в БД;

  4. Редактируется в стандартной админке Django;

  5. Активный пункт меню определяется исходя из URL текущей страницы;

  6. Меню на одной странице может быть несколько, они определяются по названию;

  7. При клике на меню происходит переход по заданному в нем URL. Он может быть задан как явным образом, таки через named URL;

  8. На отрисовку каждого меню требуется ровно 1 запрос к БД;

Нужен Django-арр, который позволяет вносить в БД меню (одно или несколько) через админку, и нарисовать на любой нужной странице меню по названию.

{% draw_menu 'main_menu' %}

При выполнении задания из библиотек следует использовать только Django и стандартную библиотеку Python.

Что получилось

image image image

На отрисовку каждого меню требуется 1 SQL запрос

Через URL определяется активный пункт меню, все что над пунктом развернуто. первый уровень вложенности под ним тоже развернут image image

Создать меню и его категории можно в админке, сначала нужно создать меню, а потом категории, при создании категорий указывается к какому меню она будет принадлежать, а также, есть ли у нее родительская категория(если не ставить, то будет родительской категорией)

  1. Создание меню image
  2. Создание родительской категории image
  3. Создание дочерней категории image

image image

Как запустить

git-clone https://github.com/artklk12/uptrader_testcase.git ./manage.py runserver

PS

Мне сказали изобрести костыль, используя только библиотеки Django и python, в целом код не пройдёт код-ревью получился вменяемый, но для создания вложенного меню в обычной ситуации я бы использовал сторонние библиотеки, например mptt

uptrader_testcase's People

Contributors

isthataskyline avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.