Код проверки доктора Django и автоматические фиксирует антиблокировки Django. Мы проверили 666 проектов Django для проблем, препятствующие ремонтопригодности и обнаружили, что 8% сайтов Django имеют неправильно заказанные промежуточные программы Читать дальше Отказ
Неправильное промежуточное программное обеспечение может сломать промежуточное программное обеспечение, следовательно, документы для промежуточного программного обеспечения консультируют Это должно прийти до x или после тебя Некоторые промежуточные программы читают заголовки, которые другие устанавливают. Некоторые заданные заголовки, которые влияют на кэширование. Некоторые выполняют Действия на оказанном контент ответа такие как ГЦИП. Таким образом, мы можем видеть, почему порядок важен.
Давайте вставке в заказ встроенное промежуточное программное обеспечение Django должно соответствовать, а почему ваш сайт может сломаться, если вы не придерживаетесь этого заказа. Неправильное заказанное промежуточное программное обеспечение может сломаться сделать эти функции не работать, как вы задуманные в разы.
Возле начала
SecurityMiddleware
Промежуточное программное обеспечение, которое увлекается безопасностью. Проверки безопасности должны произойти как можно раньше запроса, поэтому совет должен иметь это в начале промежуточного программного обеспечения. Смотрите здесь Для нашего глубокого погружения в это промежуточное программное обеспечение и видео, демонстрирующие хаки, ваш сайт уязвим без него.
Commonmiddleware
Как подразумевает название, это выполняет общие операции, мы ожидаем, что Django делать такие как перенаправление в соответствии с Append_slash
и Prepend_www
параметр. Если Django перенаправляется на основе URL-адреса, мы хотим, чтобы это произошло как можно скорее, следовательно, это Middlware приходит в начале. Промежуточное программное обеспечение также устанавливает длину контента, на которой могут положиться другие Middlwares.
Localemiddleware
Это обрабатывает интернационализацию контента. Это настраивает контент для каждого пользователя. Мы не хотели бы ни одной части нашего веб-сайта пропустить эту конкретную конкретную и пользовательскую настройку, специфичную к пользователю и у вас на английском языке на английском колодец на испанском языке. Нет, Muévelo Cerca del Commartio Отказ
Близко к концу
Есть два встроенных Foodback Indithwares, которые выполняют некоторую работу, если Все остальное не удается :
RedirectfallbackMiddleware
Это промежуточное программное обеспечение обрабатывает 404, перенаправляя где-то в зависимости от перенаправления записей, установленных в Django Admin. Мы не хотели бы, чтобы это произошло в начале, в противном случае записи базы данных будут иметь приоритет за кодом в URLS.PY, а также поиск базы данных замедляет ответ, который не требует отступления.
Flatpagefallbackmiddleware
Очень похоже на Redirectfallbackmiddleware.
Но он обслуживает плоские страницы вместо того, чтобы перенаправить пользователь где-то.
Относительно друг друга
И тогда начинается веб-паутина:
UpdateCachemidDleware
до Sessionmiddleware
UpdateCachemiddleware.
до Gzipmiddleware
UpdateCachemidDleware
до Localemiddleware.
Sessionmiddleware
до Localemiddleware
Gzipmiddleware.
до Conditualgetmiddleware
Sessionmiddleware
до Аутентификация Moddleware
Sessionmiddleware.
до Messagemiddleware
Csrfviewmiddleware
до ReturnUsermidDleware.
Fetchfromcachemiddleware.
до Sessionmiddleware
Fetchfromcachemiddleware.
до Gzipmiddleware
Fetchfromcachemiddleware.
до Localemiddleware.
Ваш кодовый базе правильно заказывает промежуточное программное обеспечение?
Почти 1 в 10 из разработчиков чтения этого, вероятно, делают. Легко пропустить что-то во время обзора кода. Я могу проверить это для вас в django.doctor или может Просмотрите свой GitHUB PRS :
Или попробуйте Рефакторы Django Challenges Отказ
Оригинал: “https://dev.to/djangodoctor/hidden-in-plain-sight-8-of-django-projects-have-broken-middleware-order-54bm”