Django Academy · Lekcja

Pisanie własnego middleware

Podpinanie się do każdego żądania i każdej odpowiedzi

Lekcja 3 z 413 kroki

Pisanie własnego middleware to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.

Middleware w jednym zdaniu

Middleware to warstwa opakowująca każde żądanie i każdą odpowiedź, która pozwala uruchomić kod przed widokiem i po jego zwróceniu.

Model cebuli

Wyobraź sobie middleware jako warstwy cebuli otaczające widok. Żądanie przechodzi do wewnątrz przez każdą warstwę, a następnie odpowiedź wraca na zewnątrz.

Nowoczesny styl

Nowoczesne middleware to obiekt wywoływalny, który podczas uruchamiania jednorazowo przyjmuje get_response i zwraca procedurę obsługi wywoływaną przez Django dla każdego żądania.

Minimalne middleware

Fabryka przechowuje get_response, a wewnętrzna funkcja wykonuje kod wokół wywołania. Taka forma obiektu wywoływalnego to wszystko, czego potrzebuje Django.

def simple(get_response):
    def handler(request):
        # before the view
        response = get_response(request)
        # after the view
        return response
    return handler

Kod przed widokiem

Wszystko przed get_response uruchamia się podczas obsługi żądania przychodzącego. To idealne miejsce na rejestrowanie, pomiar czasu lub dołączanie danych do żądania.

def handler(request):
    request.start = time.time()
    return get_response(request)

Kod po widoku

Wszystko po get_response uruchamia się podczas obsługi odpowiedzi wychodzącej. Można wtedy odczytać lub zmodyfikować odpowiedź, zanim dotrze do przeglądarki.

response = get_response(request)
response["X-App"] = "demo"
return response

Forma oparta na klasie

Middleware można również napisać jako klasę z metodami __init__ i __call__. Odzwierciedla ona formę funkcyjną, ale porządkuje powiązane punkty rozszerzeń.

class Timer:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        return self.get_response(request)

Zarejestruj w MIDDLEWARE

Middleware zaczyna działać dopiero po umieszczeniu jego ścieżki kropkowej w ustawieniu MIDDLEWARE w pliku settings.py.

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "myapp.middleware.simple",
]

Przerwanie obsługi żądania

Jeśli middleware samo zwróci odpowiedź zamiast wywołać get_response, przerywa łańcuch i widok nie zostaje uruchomiony.

Jedno zadanie dla każdego middleware

Każde middleware powinno koncentrować się na jednym obszarze odpowiedzialności, takim jak pomiar czasu lub sprawdzanie uwierzytelnienia. Małe warstwy łatwiej uporządkować i debugować.

Typowe zastosowania praktyczne

Zespoły używają własnego middleware do rejestrowania żądań, dodawania nagłówków, obsługi lokalizacji i lekkiego sprawdzania uwierzytelnienia w całej witrynie.

Szybkie sprawdzenie

Sprawdź, jak nowoczesne middleware przekazuje obsługę do następnej warstwy.

Podsumowanie: Tworzenie middleware

Utworzył(a) Pan/Pani custom middleware: obiekt wywoływalny przyjmujący get_response, z kodem przed widokiem i po nim, zarejestrowany w ustawieniu MIDDLEWARE. ✅

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Pisanie własnego middleware” jest bezpłatna?

Tak — pełny tekst „Pisanie własnego middleware” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Pisanie własnego middleware”?

Podpinanie się do każdego żądania i każdej odpowiedzi Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Django Academy?

Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Pisanie własnego middleware”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?

Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Sygnały post_save i pre_delete
  2. Prawidłowe podłączanie odbiorników
  3. Pisanie własnego middleware
  4. Kolejność middleware i process_view
← Powrót do Django Academy