Рубрики
Без рубрики

Добавьте немного волшебства на свой сайт Django

Django-Unicorn-это волшебная структура полного стека для Django ✨. Tagged с Python, Django, JavaScript, Unicorn.

Django-Unicorn (3 серии части)

Джанго был по праву или неправильно, высмеивал в некоторых кругах за то, что он не следил за современным веб -разработкой. Это даже появилось в некоторых комментариях недавних Django Developers Survey Анкет Лично я не нахожу это суждением совершенно справедливым (вся работа, проделанная для асинхронных взглядов, является ярким примером инноваций Джанго), однако история о том, как интегрировать Джанго с современной фронтальной структурой, не очень ясна.

Тем не менее, я считаю, что большинству сайтов в любом случае не нуждаются в сложной фронтальной структуре. Большинство веб-сайтов не представляют собой приложения для одностраничных (SPAS), но разработчики получают раздувание и производительность участка большой фронтальной структуры, в дополнение к созданию большей работы. Следуя по стопам Дзен из Python’s «Просто лучше, чем сложный», я предпочитаю избегать сложности, если это не нужно.

Примечание. Когда я ссылаюсь на «Frontend Frameworks», я в основном думаю о Реагировать , Vue.js , Эмбер и Угловой Анкет Тем не менее, в настоящее время я очарован несколькими более новыми микро-фраминными заводами ( например Альпийский , htmx ) и чувствуют, что они представляют меньше проблем, которые я описываю ниже.

Вы боролись с Gulp , ворчать , браузериф или WebPack в прошлом? (PSST, я слышал Посылка Решает все ваши проблемы! О нет, подожди, может быть, Esbuild все решит?) Что происходит, когда новый инструмент Javascript теперь является «правильным» способом создания вашего сайта? Я бы предпочел не тратить время на переход на другой инструмент для постепенных улучшений, потому что состояние искусства снова изменилось. Я бы предпочел потратить время на работу над моим приложением, а затем настраивая, как создать фронтальные активы.

Вам нравится начать процесс Node.js, чтобы наблюдать за изменениями кода JavaScript каждый раз, когда вы запускаете Django Рансервер управленческая команда? Для меня это просто еще одно осложнение, которое мешает опыту разработчика.

Лучшая практика подключения приложения Django с фронтальной структурой – это создание API REST или, в последнее время GraphQL. Создание этого API займет время и усилия от улучшения основной функциональности веб -сайта. Если вы не ожидаете также поддержать мобильные приложения, существует много работы по созданию надежного API REST. В то время как Django Rest Framework (DRF) – это блестящая библиотека, которая поощряет здравые методы отдыха и уменьшает, сколько кода требуется для тривиальных реализаций, это еще одна структура, сложенная поверх Джанго. Даже с тривиальными реализациями понимание того, как работает DRF, может быть сложным.

GraphQL решает некоторые из картинов объектов и запросы особенностей отдыха, но у него есть некоторые из тех же недостатков, что и DRF. Создание сериализаторов для каждой модели и понимание конкретной терминологии не являются тривиальными. Кроме того, существует относительно новая парадигма того, как работает GraphQL и нюансы того, как он реализован.

Кроме того, API часто требуют аутентификации, авторизации, CORS и других мер безопасности в дополнение к любой обычной функции веб -сайта.

Чтобы интегрировать фронтальную структуру в существующий сайт Django, вам нужно прыгнуть через некоторые обручи, чтобы Django покинул JavaScript Framework только Du Jour и, например, не интерпретирует Vue’s {{}} как переменные шаблона Django. Несмотря на то, что это выполнимо, это просто еще одна вещь, чтобы справиться. Другим осложнением является переключение контекстов между шаблонами Django HTML и кодом фронтальной структуры. Шаблон Django HTML имеет тенденцию загрузить данные, а затем позволяет Frontend Framework обрабатывать всю тяжелую работу.

Другой подход состоит в том, чтобы вообще пропустить HTML -шаблоны Django и использовать только что созданный вами API. В любом случае, вы выбрасываете язык шаблонов Django, надежный и расширяемый способ преобразования данных в HTML. Хотя Django Включает может Будьте использованы для создания многоразовых компонентов пользовательского интерфейса на веб -сайте.

Каждый раз, когда я начинаю новый проект Django, я прохожу одни и те же умственные расчеты, чтобы решить, как справиться с фронтом сайта.

  • Какая структура CSS использовать?
  • Как настроить предварительный процессор CSS (например, SASS, меньше и т. Д.)?
  • Используйте фреймворк JavaScript или просто соберите несколько микро-библиотеров и ванильный JavaScript?
  • Создать API REST? Настроить GraphQL?

Для некоторых из этих вопросов у меня есть некоторые сторонние приложения, которые я копирую из проекта в проект, который в основном работает, но это сложно.

Одна вещь, которую я люблю в Python и Django,-это «батарея, включающий». Я знаю, что Django курировал интегрированную, стабильную и безопасную платформу для создания веб-сайтов на стороне сервера. Я не хочу принимать другие решения, просто чтобы иметь современный опыт на веб -сайте – я просто хочу создать – не проходить через конфигурацию.

Я завидовал, наблюдая за разработчиками других серверных фреймворков, решающих те же проблемы, а именно Livewire В Laravel, PHP Web Framework и LiveView в Феникс , Elixir Web Framework. Поэтому, как и любой другой необоснованный разработчик, который не хочет переключаться от своего предпочтительного языка, я подумал, что «насколько сложно было бы построить это в Джанго?!» (Оказывается… Это тяжело!) Я перенес небольшую часть идей из Livewire Джанго, чтобы прототип, как это может работать в течение выходных и Django-Unicorn был рожден.

У меня было определенное преимущество кого -то, умнее, чем я, который выжил впереди меня – возможность взглянуть на техническую документацию LiveWire, и экраны были невероятно полезны, чтобы точно увидеть, какие болевые точки Livewire Решает. Я также был вдохновлен основными частями того, как JavaScript Portion Livewire работает.

В настоящее время Django-Unicorn сосредоточен на простоте и позволяет 80% от того, что требует современного веб -сайта. Всегда будет необходимость в более сложных SPA Frameworks, но если все, что вам нужно, это простое взаимодействие на веб -сайте, то Django-Unicorn может предоставить это с минимальной суетой.

Основные строительные блоки уже доступны в версии 0.3.0 из Django-Unicorn , но я все еще сглаживаю грубые края и добавляю больше функциональности. Документация также является работой, но я постепенно добавляю к нему, чтобы сделать ее максимально полезным. Я хотел бы услышать отзывы об идее и дополнительных функциях, чтобы улучшить опыт разработчика Django для других. Код лицензирован, поскольку MIT и PRS высоко ценится в https://github.com/adamghill/django-unicorn/ !

Фотография единорога от MERITT THOMAS на Неспособный

Django-Unicorn (3 серии части)

Оригинал: “https://dev.to/adamghill/add-some-magic-to-your-django-website-l8k”