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

Какие лучшие практики Django разрываются?

Django Doctor проверяет кодовые базы, чтобы найти и автоматически исправить Django Anti-Patterns. Мы проверили код Джанго … Помечено с Django, WebDev, Python, Codequality.

Django Doctor проверяет кодовые базы, чтобы найти и автоматически исправить Django Anti-Patterns. Мы проверили саму базу кодовой базы Django для анти-паттернов, которую Django документация предполагает, мы избегаем. Короче говоря, они сделали очень хорошо, но есть небольшая комната для улучшения.

Прочитайте аудит

1. Твердо кодированный статический URL-адрес в шаблоне

Лучшая практика Django предлагает избежать жестких статических активов и вместо этого использовать {% Статический ... . Тем не менее, кодовая база Django жестко кодирует файл шрифта для Этот шаблон администратора Анкет Этот файл используется в Технический 404 Ответ Анкет Воздействие низкое: шрифт может не загружаться.

Если вы незнакомы: {% Статический ... Возвращает путь, который браузер может использовать для запроса файла. В самых простых, это вернет путь, который исследует файл в вашей локальной файловой системе. Это хорошо для локального разработчика, но в Prod мы, скорее всего, будем использовать Сторонние библиотеки такие как отбелить или Django Storages Чтобы повысить производительность производственного веб -сервера.

Есть причины, кроме «потому что S3», почему мы используем {% Статический ... :

Файл Reving

У Phitenoise есть бэкэнд хранения Staticfiles_storage это работает Файл Reving для разрыва в кеша. В результате путь файла, проведенный в шаблоне, переименован: script.js может быть переименован в Script-23ewd.js . Staticfiles_storage генерирует хэш из содержимого файла, переименование файла и генерирует манифестный файл, который выглядит так:

{‘scripts.js’: ‘scripts-23ewd.js’}

Это называется reving Анкет {% static 'script.js' ... рендеры 'Script-23ewd.js' в шаблоне, потому что 'script.js' в манифесте смотрит вверх, что привело к 'Script-23ewd.js' решен.

Это для разрыва кэша: когда содержимое файла изменяет имя файла тоже изменяется, поэтому в файле Revv может быть навсегда установлен заголовки кэша в CDN или браузер. При следующем развертывании, если содержимое файла изменяется, так же имен файла запрашивается, и, следовательно, наиболее актуальный файл извлекается браузером.

Так {% Статический ... Обрабатывает абстрагирующие механизмы, нарушающие кеш, чтобы вместо этого мы могли сосредоточиться на шаблонах в шаблоне.

Как бы вы решили эти анти-паттерны? Пытаться Наша задача рефакторов Django Refactor .

Веб -сайты могут двигаться домой

Дано достаточно времени, веб -сайт может измениться, где он обслуживается:

  • От субдомена к пути: abc.example.com на example.com/abc/и xyz.example.com на example.com/xyz/. Это произошло в проекте, в котором я был по причинам SEO.
  • Объединение нескольких репозиториев в один. Это случилось с несколькими проектами, с которыми я был связан, чтобы сделать разработку более эффективным.

На этом этапе было бы неясно, какие файлы приложения обслуживаются/статичны/. Да, разработчик может найти заменить все/static/with/abc/static/and/abc/static/. Но если {% Статический ... Использовался им не нужно.

Так {% Статический ... Предотвращает нарушение JavaScript и CSS, потому что где веб -сайт обслуживается измененный.

Подавая от S3

Джанго предложил Не обслуживание статических файлов с веб -сервера в производстве . Один из способов сделать это – обслуживать файлы от S3. Если Staticfiles_storage Служает от S3, тогда статический домен, вероятно, будет отличаться от домена WebServer, если какая -то конфигурация в CloudFront не обеспечит обратное.

Итак, в этом случае используя {% static 'script.js' ... в конечном итоге рендерирует https://s3-example-url.com/script.js вместо /static/script.js Анкет

Читать дальше Анкет

2. Django Code Style: Модельный метод порядка

Увеличение стандартизации и предсказуемости вашего стиля кода помогает другим разработчикам прочитать ваш код и, в конечном счете, облегчают и дешевле работать по мере его роста.

Django Coding Style предлагает следующий порядок внутренних классов, методов и атрибутов:

  • Полевые кортежи
  • Поля базы данных
  • Пользовательские атрибуты менеджера
  • класс мета
  • def __str __ ()
  • def save ()
  • DEF DELETE
  • def get_absolute_url ()
  • Любые пользовательские методы

Однако Джанго разорвал этот совет дважды. Как ни странно, оба в одном файле.:

Опять же, удар низкий, поэтому 👏 django Core Devs.

Читать далее

Ваш код следит за лучшей практикой Django?

Со временем для технического долга легко проникнуть в вашу кодовую базу. Я могу проверить это для вас в django.doctor , или может Просмотрите свой GitHub PRS :

Или попробуйте Django Refactor Challenges Анкет

Оригинал: “https://dev.to/djangodoctor/what-django-best-practices-is-django-breaking-4e2p”