50 najczęściej zadawanych pytań i odpowiedzi na rozmowach kwalifikacyjnych Django dla doświadczonych programistów

Wypróbuj Nasz Instrument Do Eliminowania Problemów

Podstawy struktury internetowej Django

Django jest na wysokim poziomie Framework WWW w Pythonie który umożliwia szybkie tworzenie bezpiecznych i łatwych w utrzymaniu stron internetowych. Kilka kluczowych punktów na temat Django:

  • Otwarte źródło, napisane w Pyton
  • Jest zgodny ze wzorem architektonicznym modelu-szablonu-widoków
  • Interfejs mapowania obiektowo-relacyjnego (ORM) z bazami danych
  • Interfejs administracyjny do zarządzania treścią
  • Skoncentruj się na możliwości ponownego użycia i możliwości podłączania

1. Czym jest Django i dlaczego miałbyś go używać?

Django to framework sieciowy wysokiego poziomu w języku Python do szybkiego tworzenia bezpiecznych, skalowalnych i łatwych w utrzymaniu witryn internetowych. Użyłbyś Django, ponieważ:

  • Oszczędza czas - W zestawie z powszechnie używanymi narzędziami, takimi jak strona administracyjna, ORM, silnik szablonów itp., dzięki czemu nie musisz pisać wszystkiego od zera.
  • Domyślnie bezpieczne i skalowalne - Stosuje najlepsze praktyki bezpieczeństwa, takie jak ochrona przed iniekcją SQL, ochrona przed skryptami między witrynami (XSS), ochrona przed przechwytywaniem kliknięć itp.
  • Używa baterie zawierały filozofię więc najczęstsze przypadki użycia są wbudowane
  • Wszechstronny do tworzenia stron internetowych - Potrafi budować systemy zarządzania treścią (CMS), sieci społecznościowe, platformy obliczeń naukowych, oprogramowanie dla przedsiębiorstw, geolokalizację itp.

2. Wyjaśnij główne cechy Django?

Niektóre kluczowe cechy Django obejmują:

  • ORM (mapowanie obiektów relacyjnych) - Abstrakcyjna warstwa bazy danych z wysokopoziomowym kodem Pythona dla prostszych zapytań i zmian schematu.
  • Dynamiczny interfejs administratora - Automatycznie generuje panel administracyjny do zarządzania treścią bez konfiguracji.
  • Dyspozytor adresu URL - Mapuje adresy URL do widoków w oparciu o wzorce wyrażeń regularnych dla żądań routingu.
  • Silnik szablonów - Umożliwia projektowanie stron HTML z danymi dynamicznymi przy użyciu języka szablonów Django.
  • Obsługa formularzy z walidacją — logika formularzy wielokrotnego użytku renderuje HTML i sprawdza wprowadzone dane.
  • Wbudowane funkcje bezpieczeństwa - ochrona SQL Injection, XSS, Clickjacking itp.

3. Wyjaśnij architekturę i komponenty Django?

Django podąża za Szablon widoku modelu (MVT) wzór architektoniczny składający się z:

  • Model - Obsługuje dostęp do danych i baz danych
  • Pogląd - Obsługuje logikę i przetwarzanie
  • Szablon - Kontroluje prezentację i znaczniki

Inne komponenty obejmują:

  • Rozsyłacz adresów URL do kierowania adresów URL do widoków
  • ORM (Object Relational Mapper) do interakcji z bazą danych
  • Silnik szablonów do tworzenia dynamicznych stron HTML
  • Formularze do sprawdzania poprawności i renderowania formularzy HTML
  • Strona administracyjna do automatycznego zarządzania treścią
  • Moduły uwierzytelniania i autoryzacji

Modele Django i ORM

4. Wyjaśnij modele Django i zalety mapowania obiektowo-relacyjnego (ORM)?

Model w Django to klasa Pythona reprezentująca tabelę bazy danych, która dziedziczy django.db.models.Model. Niektóre korzyści wynikające z używania Django ORM obejmują:

  • Warstwa bazy danych abstraktów - Nie trzeba pisać SQL; tylko kod Pythona.
  • Agnostyk DB - Łatwo przełączaj DB, ponieważ ORM ukrywa różnice.
  • Pomocnicy ograniczeń walidatora, tacy jak Maksymalna długość dla formularzy.
  • Przychodzi z złożony interfejs zapytań do typowych wyszukiwań.
  • Propaguje się środowisko migracji zmiany schematu po stołach.

Ogólnie, ORM umożliwia programistom pracę z modelem danych w Pythonie bez konieczności znajomości języka SQL lub konkretnych szczegółów bazy danych .

5. Jak definiowane są modele Django i jakie pola są dostępne?

Modele Django to klasy Pythona rozszerzające django.db.models.Model. Każdy model reprezentuje tabelę bazy danych z atrybutami klasy modelu reprezentującymi pola tabeli db.

Niektóre powszechnie używane pola obejmują:

  • Pole Char - Tekst o ograniczonej długości
  • Pole tekstowe - Nieograniczony tekst
  • Pole całkowite - Liczba całkowita
  • Pole dziesiętne - Liczba dziesiętna o stałej precyzji
  • Pole e-mail - Adres e-mail
  • Pole pliku - Udostępnianie pliku

Istnieją również pola do relacje jak ForeignKey, ManyToManyField, OneToOneField.

6. Wyjaśnij relacje w modelu Django?

Główne relacje modeli w Django obejmują:

  • Jeden na jednego - Pole OneToOne
  • Jeden za dużo - ForeignKey używany, gdy strona „wiele” zawiera relację
  • Wiele do wielu - ManyToManyField używane, gdy obie strony mogą zawierać wiele instancji

Na przykład blog Klucz obcy przy wpisie oznacza, że ​​na blogu znajduje się wiele wpisów. Ale wpis Pole OneToOne linki zwrotne do Bloga, ponieważ Wpis może należeć tylko do jednego Bloga.

7. Jak powstają zapytania w Django ORM?

Niektóre sposoby wysyłania zapytań do modeli w Django obejmują:

  • Model.objects.all() - Pobierz wszystkie obiekty
  • Model.objects.get() - Pobierz pojedynczy obiekt
  • Model.objects.filter() — Filtruje obiekty na podstawie warunków
  • Model.objects.exclude() - Odfiltruj na podstawie warunków
  • Model.objects.order_by() - Zamawia obiekty

Łańcuchowe filtry, takie jak Entry.objects.filter(publish_date__lte=data).exclude(views__lt=10) buduje złożone zapytania ORM.

8. Wyjaśnij migracje Django i sposób obsługi zmian schematu?

Obsługa migracji Django propagowanie zmian w modelach i polach do schematu bazy danych . Używamy poleceń takich jak:

  • makemigrations - Tworzy pliki migracji dla zmian w modelu.
  • migracja — synchronizuje bazę danych poprzez zastosowanie plików migracji.
  • sqlmigrate — wyświetla surowy kod SQL dla pliku migracji.

Gdy modele się zmieniają, stare migracje obsługują wycofywanie zmian, podczas gdy nowe migracje wprowadzają wymagane zmiany w schemacie bazy danych.

9. Jak zoptymalizować wydajność modelu Django ORM?

Oto niektóre sposoby optymalizacji Django ORM i wydajności modelu:

  • Ogranicz zapytania do wymaganych pól, aby uniknąć dużych łączeń danych.
  • Używać wybierz_powiązane() I pobieranie wstępne() aby zapobiec dodatkowym trafieniom db.
  • Użyj buforowania QuerySet dla niezmienionych, często używanych zapytań.
  • Włącz trwałe połączenia z bazą danych.
  • Ustaw odpowiednio indeks db dla często filtrowanych pól.
  • Skonfiguruj odpowiednią strategię fragmentowania bazy danych.

Profilowanie zapytań pomaga znaleźć możliwości optymalizacji.

Widoki i adresy URL Django

10. Czym są widoki Django i jak są zdefiniowane?

Widok w Django obsługuje logikę prezentacji żądania i zwraca HttpResponse. Definiuje się go za pomocą funkcji Pythona lub widoku rozszerzającego klasę, zwykle znajdującego się w pliku Views.py, na przykład:

|_+_|

Widoki łączą modele używane do pobierania danych i szablonów używanych do renderowania wyników.

11. Jakie są zalety widoków opartych na klasach w porównaniu z widokami opartymi na funkcjach?

Niektóre zalety widoków opartych na klasach w porównaniu z widokami funkcji:

  • Zwiększone ponowne użycie z dziedziczenia — Zastąp tylko części wymagające dostosowania.
  • Mieszanki pozwalają na ponowne wykorzystanie wspólnej logiki dyskretnej.
  • Jawne nazewnictwo, takie jak ListView, identyfikuje funkcjonalność.
  • Hermetyzuje powiązaną logikę, unikając luźno powiązanych funkcji.
  • Dodatkowe funkcje, takie jak mieszanie kontekstów, obsługa metod HTTP itp.

Ogólnie rzecz biorąc, poglądy oparte na klasach promują ponowne wykorzystanie kodu poprzez dziedziczenie i zapewnić bardziej rygorystyczną strukturę.

12. Wyjaśnij Django URLconf i sposób obsługi tras URL?

Django używa URLconfs do mapowania ścieżek URL, takich jak /about lub /products/widgets, do powiązanych widoków za pomocą wzorców wyrażeń regularnych. Lista urlpatterns znaleziona w urls.py definiuje trasy URL dla aplikacji. Na przykład:

|_+_|

Adres URL żądania jest dopasowywany sekwencyjnie do wzorców, które wykonują powiązaną funkcję widoku lub klasę w celu obsługi logiki wyświetlania.

13. Wyjaśnij pola ślimakowe Django i kiedy ich używać?

Pole ślimakowe służy do automatycznego generowania prawidłowego, unikalnego tytułu lub nazwy ślimaka URL na podstawie atrybutu instancji modelu. Na przykład tytuł wpisu na blogu zatytułowany „Co to jest Django” wygeneruje pole informacji o informacji o nazwie „What-is-Django”. Dodalibyśmy pole ślimaka do modeli, których instancje muszą być odwoływane za pomocą prostych, zakodowanych adresów URL, np .:

  • /blog/ co to jest Django / - Wyświetl szczegóły wpisu na blogu
  • /tagi/ Django / – Wyświetla listę modeli oznaczonych jako „django”

Umożliwia używanie instancji modelu Django w czystych, czytelnych adresach URL.

Szablony Django

14. Wyjaśnij szablony Django i model dziedziczenia szablonów?

Szablony Django umożliwiają projektowanie stron HTML z danymi dynamicznymi za pomocą języka szablonów, który zastępuje {{ zmienne }} i znaczniki szablonu danymi renderowanymi w czasie wykonywania.

Dziedziczenie szablonów umożliwia utworzenie podstawowego szablonu nadrzędnego zawierającego wspólne znaczniki i szablony podrzędne przesłaniające bloki w celu dostosowania układu. Na przykład:

|_+_|

Szablony podrzędne mogą zastępować bloki, podczas gdy reszta znaczników strony jest dziedziczona z szablonu nadrzędnego.

15. Jak ponownie wykorzystać szablony i czym są tagi włączające?

Sposoby ponownego wykorzystania szablonów:

  • Dziedziczenie szablonów - Zastąp części bloków szablonów nadrzędnych
  • Używać Dołącz tag aby dołączyć inny szablon, np.: |_+_|
  • Użyj makr szablonów, aby ograniczyć powielanie:|_+_|

Tagi włączające podobne do włączania działają jak funkcje - pobierają dane i zwracają wyrenderowane znaczniki z określonego szablonu, unikając duplikacji.

16. Czym są niestandardowe tagi i filtry szablonów Django?

Django zapewnia możliwość definiowania niestandardowych tagów szablonów i filtrów innych niż wbudowane w celu rozszerzenia funkcjonalności szablonów.
Oto kilka przykładów:

  • Niestandardowe tagi do kontrolowania logiki, takie jak pętle forloop i instrukcje if
  • Filtry umożliwiające modyfikację zmiennych wyjściowych w nowym formacie
  • Minimalizuj filtr, aby połączyć skompresowane zasoby CSS/JS
  • Filtr Markdown do renderowania tekstu w formacie Markdown

Niestandardowe tagi/filtry Django są tworzone poprzez pisanie kodu Pythona rozszerzającego biblioteki szablonów. Pomagają rozszerzyć logikę szablonów w celu uzyskania wymaganych efektów renderowania.

Formularze Django

17. Wyjaśnij formularze Django i formularze modelowe?

Formularze Django pomagają w obsłudze:

  1. Wyświetlanie — renderuj jako HTML dla interfejsu użytkownika formularza internetowego
  2. Walidacja — sprawdź wprowadzone dane, np. weryfikacja e-mailem
  3. Ponowne wykorzystanie – zasada DRY pozwalająca uniknąć powielania
Na przykład ContactForm może wyświetlać formularz kontaktowy HTML, sprawdzać poprawność danych wejściowych i renderować błędy.
Chwila Formularz modelu tworzy formularz powiązany z modelem, więc pola są tworzone automatycznie na podstawie atrybutów modelu. Na przykład EntryForm z modelu Entry jest generowany automatycznie na podstawie jego atrybutów CharField/DateField.

18. Jak obsługiwane są wybory puste/null i pola w formularzach?

Kilka sposobów radzenia sobie z nimi w formularzach:

  1. wymagane = fałsz - Zezwala na puste wartości, czyniąc pole opcjonalnym
  2. puste = prawda - Zezwala na „” pusty ciąg znaków oprócz NULL
  3. wybory - Weryfikuje wstępnie zdefiniowaną listę wyborów, np.: |_+_|
  4. Pole wyboru modelu - Wybierz za pomocą menu rozwijanego z zestawu zapytań

Wyświetlają powiązane wybory, tworzą opcjonalne pola lub ograniczają wartości zgodnie z potrzebami aplikacji.

19. Jak można zastosować niestandardową walidację formularza?

Niektóre sposoby zastosowania niestandardowej walidacji formularza:

  • Dodaj czysty_ Nazwa pola () - Walidacja specyficzna dla pola
  • Użyj funkcji clean() formularza do sprawdzania poprawności między polami/na poziomie formularza
  • validator_list w polu do ponownego wykorzystania czeków
  • Niestandardowe walidatory definiujące pomocników walidacji

Na przykład:

|_+_|

Weryfikacja niestandardowa umożliwia egzekwowanie złożonych reguł biznesowych.

Administracja Django

20. Wyjaśnij stronę administracyjną Django i jak modele są w niej rejestrowane?

Django posiada wbudowany interfejs administracyjny, umożliwiający menedżerom treści zarządzanie zawartością bazy danych bez konieczności posiadania doświadczenia w oprogramowaniu.
Aby zarejestrować modele na stronie administracyjnej:
Dokonuj migracji
Importuj i zarejestruj model za pomocą admin.site.register()
Utwórz superużytkownika
Teraz administratorzy mogą dodawać, edytować i usuwać instancje modeli za pomocą automatycznych interfejsów CRUD.

Dostosowania, takie jak pola wyszukiwania, filtry list, nawigacja w hierarchii dat, również automatycznie konfigurują, oszczędzając tygodnie czasu programowania.

21. W jaki sposób można dostosować administratora Django?

Kilka sposobów dostosowania panelu administracyjnego Django:

  • Dostosuj widoki list za pomocą lista_wyświetl , lista_filtr itp
  • Dodaj niestandardowe strony rozszerzające adresy URL witryn administracyjnych za pomocą Metody ModelAdmina
  • Zastąp wbudowane szablony, kopiując pliki szablonów administratora
  • Klasy podklasy ModelAdmin dla niestandardowej logiki biznesowej specyficznej dla interfejsu użytkownika
  • Dostępne są różne niestandardowe zmienne kontekstowe szablonu

Metody ModelAdmin, takie jak save_model, Delete_model, włączają wyzwalacze logiczne. Drobne poprawki lub główne niestandardowe komponenty pomagają dostosować administratora do zastosowań biznesowych.

Sygnały Django, oprogramowanie pośredniczące, buforowanie i testowanie

22. Wyjaśnij sygnały Django i sposób, w jaki umożliwiają one logikę wyzwalania?

Django dostarcza sygnały, które umożliwiają logikę wyzwalania, gdy wystąpią określone akcje. Na przykład:

  • pre_save/post_save — przed/po zapisaniu instancji modelu
  • pre_delete/post_delete – Przed/po usunięciu instancji modelu
  • request_started/request_finished - Otrzymano żądanie użytkownika/zwrócono odpowiedź

Rejestrujemy funkcje odbiornika do obsługi sygnałów za pomocą dekoratora @receiver. Pozwala to na wykonanie kodu dla:

  • Zapisywanie dziennika aktywności przed/po aktualizacjach modelu
  • Zadania asynchroniczne, takie jak zmiana rozmiaru obrazów po dodaniu
  • Włącz wysyłanie powiadomień po aktualizacjach

Sygnały umożliwiają dołączenie wyzwalaczy logicznych w sposób odsprzężony.

23. Wyjaśnij oprogramowanie pośredniczące Django i jak ono działa?

Oprogramowanie pośrednie Django to haki, które przechwytują i przetwarzają żądania/odpowiedzi. Zawierają:

  • Process_request — przed wywołaniem widoku
  • Process_response — po obejrzeniu zwraca odpowiedź
  • Process_view — tuż przed wywołaniem widoku
  • Process_template_response — po wyrenderowaniu treści odpowiedzi
  • Process_exception — jeśli w widoku został zgłoszony wyjątek

Oprogramowanie pośredniczące może sprawdzać autoryzację użytkownika, blokować adresy IP, włączać CORS poprzez dodawanie nagłówków, metryk dziennika itp., umożliwiając przejrzyste rozszerzanie żądań i potoki obsługi odpowiedzi w aplikacjach Django.

24. Co to jest buforowanie i gdzie można je zaimplementować w Django?

Buforowanie polega na tymczasowym zapisywaniu kosztownych obliczeniowo zapytań/obliczeń w celu poprawy wydajności. Django obsługuje buforowanie poprzez:

  • Niskopoziomowy interfejs API pamięci podręcznej dla dowolnych danych
  • Buforowanie dla poszczególnych witryn i widoków
  • Fragment szablonu buforujący znacznik {% cache %}
  • Buforowanie widoków na stronę przy użyciu dekoratora cache_page
  • Wbudowane buforowanie zapytań do bazy danych

Pamięci podręczne mogą korzystać z pamięci Redis, memcached lub plików/baz danych. Buforowanie zapobiega niepotrzebnym, powtarzającym się zapytaniom lub obliczeniom bazy danych, umożliwiając szybsze ładowanie.

25. Wyjaśnij frameworki testowe Django i jak z nich korzystałeś?

Django zawiera moduły testowe dla:

  • Testy jednostkowe — do testowania widoku, szablonu i logiki modelu. Np.: sprawdzanie menedżera niestandardowego modelu zwraca poprawny zestaw zapytań.
  • Testy klienckie — do testowania odpowiedzi i zachowania interfejsu użytkownika przy użyciu przeglądarki testowej.
  • Testy sieciowe — używa Selenium do testowania rzeczywistego wyniku renderowanej strony.

Na przykład, używając Django TestCase:

|_+_|

Automatyczne przebudowy i testowe bazy danych ułatwiają testowanie aplikacji Django.

Struktura i uwierzytelnianie Django REST

26. Wyjaśnij framework Django REST?

Django REST Framework (DRF) pomaga tworzyć interfejsy API REST dla aplikacji Django. Kluczowe cechy:

  • Wydajne formaty obsługi serializacji, takie jak JSON
  • Obsługa metod HTTP przyjazna AJAX dla interfejsów API
  • Gotowe do użycia narzędzia do interfejsu użytkownika i generowania schematów
  • Zasady uwierzytelniania, w tym OAuth1a/2
  • Wysoce konfigurowalne abstrakcje wielokrotnego użytku dla interfejsów API

Zapewnia elementy składowe do szybkiego tworzenia niezawodnych interfejsów API obsługujących serializację, żądania/odpowiedzi, wersjonowanie i łatwą dokumentację.

27. Wyjaśnij uwierzytelnianie oparte na tokenach w frameworku Django REST?

Uwierzytelnianie oparte na tokenach wiąże losowy, unikalny ciąg tokenów z każdym kontem użytkownika. Token identyfikujący zalogowanego użytkownika dołączany jest do żądań API:

|_+_|

Backendy widoku uwierzytelniają użytkownika, sprawdzając, czy przesłany token jest zgodny z tym przechowywanym w bazie danych połączonej z tym kontem. Jeśli jest poprawny, użytkownik zakłada, że ​​tożsamość uwierzytelnionego użytkownika umożliwia bezstanowe uwierzytelnianie użytkownika w oparciu o token. Niestandardowe tokeny za pośrednictwem sygnałów lub losowych tokenów UUID zapewniają elastyczność.

28. Jak wdrożyć uwierzytelnianie w aplikacjach internetowych i API Django?

Django udostępnia wbudowane moduły uwierzytelniania dla aplikacji i interfejsów API:

  • Sesje — w przypadku aplikacji internetowych zapewniających autentyczność w oparciu o pliki cookie
  • Uwierzytelnianie podstawowe — proste uwierzytelnianie HTTP za pomocą nazwy użytkownika/hasła
  • Token sieciowy JSON — bezstanowe uwierzytelnianie tokenu dla interfejsów API
  • Dostawcy OAuth 1a i OAuth 2 — integracja z serwisami społecznościowymi/zewnętrznymi

Zwyczaj:

  • Zastąp niestandardowy model użytkownika
  • Niestandardowy backend/dostawcy rozszerzający uwierzytelnianie Django
  • Obsługuj zewnętrzne usługi tokenów, takie jak Auth0

Od w pełni niestandardowych modeli użytkowników po integrację z firmami zewnętrznymi, Django może sprostać złożonym wymaganiom uwierzytelniania.

Wdrożenie, skalowanie i wydajność Django

29. Jak skonfigurować środowisko wdrożenia produkcyjnego dla aplikacji Django?

Kroki konfiguracji wdrożenia produkcyjnego dla Django:

  1. Skonfiguruj serwer aplikacji, taki jak Nginx, Apache
  2. Skonfiguruj WSGI przy użyciu serwera aplikacji gunicorn
  3. Skonfiguruj obsługę plików statycznych i multimedialnych
  4. Włącz mechanizmy buforowania
  5. Skonfiguruj pocztę e-mail i inne usługi produkcyjne
  6. Włącz mechanizmy bezpieczeństwa, takie jak CSRF
  7. Skonfiguruj certyfikaty SSL

Inne optymalizacje, takie jak korzystanie z sieci CDN, baz danych master-slave itp. również pomagają w uzyskaniu wydajnych i niezawodnych wdrożeń.

30. Jak można skalować aplikacje Django w poziomie i w pionie?

Skalowanie poziome oznacza rozkład obciążenia poprzez dodanie większej liczby maszyn. Można tego dokonać poprzez:

  • Uruchamianie aplikacji za żądaniami podziału modułu równoważenia obciążenia
  • Korzystanie z serwerów pamięci podręcznej odwrotnego proxy, takich jak Varnish
  • Włącz poziome skalowanie bazy danych replik odczytu

Skalowanie pionowe oznacza użycie lepszego sprzętu serwerowego. Można tego dokonać poprzez:

  • Skaluj do większego pojedynczego serwera z większą liczbą procesorów lub pamięci RAM
  • Używaj szybszej pamięci masowej, takiej jak dyski SSD, do obsługi obciążeń związanych z operacjami we/wy

Odpowiednia strategia skalowania może pomóc aplikacjom obsłużyć większy ruch.

31. Jakie są wskazówki dotyczące optymalizacji wydajności aplikacji Django?

Kilka wskazówek dotyczących optymalizacji wydajności Django:

  • Włącz buforowanie i trwałe połączenia z bazą danych
  • Używaj asynchronicznych kolejek zadań, takich jak Seler, do kosztownych zadań w tle
  • Skonfiguruj serwery aplikacji Django za pamięcią podręczną proxy
  • Włącz oprogramowanie pośredniczące gzip i minifikację
  • Dostosuj indeksy i zapytania bazy danych
  • Skonfiguruj replikację bazy danych master-slave
  • Monitoruj i profiluj wskaźniki wydajności

Buforowanie, optymalizacja bazy danych, odciążanie zadań w tle i proxy pomagają pokonać wąskie gardła wydajności Django.

Bezpieczeństwo Django

32. Wyjaśnij ryzyko związane ze skryptami krzyżowymi (XSS) i w jaki sposób szablony Django im zapobiegają?

Ataki XSS mają miejsce, gdy niebezpieczne i niezaufane dane wejściowe użytkownika są renderowane bez ucieczki, co pozwala na wstrzyknięcie kodu JavaScript.
Na przykład komentarze renderowane z db spowodują problem XSS:

|_+_|

Szablony Django wymykają się wszystkim wynikom, zapobiegając problemom XSS:

|_+_|

Funkcja automatycznej ucieczki, tokeny csrf i oprogramowanie pośredniczące również zwiększają bezpieczeństwo aplikacji Django.

33. Jakie ryzyko wiąże się z zastrzykami SQL i jak Django się przed nimi chroni?

Zastrzyki SQL mają miejsce, gdy wykonywane są niebezpieczne surowe ciągi SQL z danych wejściowych użytkownika, co umożliwia uruchamianie złośliwych zapytań SQL. Na przykład:

|_+_|

Django chroni przed zastrzykami SQL poprzez:

  • Parametry zapytania — wartości są przekazywane oddzielnie i ucieczki
  • Abstrakcja ORM — brak dostępu do zapisu nieprzetworzonych zapytań SQL
  • Zabezpieczenia na poziomie sterownika bazy danych

Modele Django zapobiegają zagrożeniom SQL, zapewniając abstrakcję i ucieczkę, uniemożliwiając modyfikowanie zamierzonych zapytań.

34. Jak można zapobiec podatnościom na kliknięcia w Django?

Clickjacking nakłania użytkowników do klikania ukrytych, złośliwych elementów maskujących się jako legalne poprzez nakładanie treści. Django pomaga zapobiegać przechwytywaniu kliknięć poprzez:

  • Oprogramowanie pośredniczące umożliwiające nagłówek X-Frame-Options
  • Chyba że wyjątki określono w dekoratorach
  • Wartość może mieć wartość SAMEORIGIN lub DENY w celu zwiększenia bezpieczeństwa

To instruuje przeglądarki, aby zapobiegały ładowaniu jakiejkolwiek części strony przez ramki iFrame, zapobiegając nakładaniu się sztuczek oszukujących kliknięcia. Dokładne opcje ramek zapewniają ochronę dostosowaną do wymagań aplikacji i zapobiegają przechwytywaniu kliknięć.

Filozofia Django z bateriami

35. Jakie typowe przypadki użycia umożliwia filozofia Django dotycząca baterii?

Niektóre przypadki użycia są obsługiwane od razu po wyjęciu z pudełka przez Django za pośrednictwem dołączonych zintegrowanych narzędzi:

  • Backend administracyjny do zarządzania treścią
  • Uwierzytelnianie i uprawnienia użytkowników
  • Struktury buforowania i funkcje pomocnicze
  • Renderowanie formularzy z walidacją
  • Podstawowe widoki CRUD dla modeli
  • Przesyłanie i przetwarzanie plików

Ta filozofia obejmująca baterie pozwala zaoszczędzić tygodnie na ponownym opracowywaniu szablonowego kodu, dzięki czemu aplikacje mogą skupić się na niestandardowej logice biznesowej, unikając ponownego wymyślania podstaw.

Różne pytania dotyczące Django

36. Czy Django skaluje się i jakie duże witryny można dzięki niemu zbudować?

Tak, Django zostało zaprojektowane z myślą o skalowalności i służy do obsługi witryn o największym natężeniu ruchu na świecie, w tym:

  • Youtube
  • Instagrama
  • Reddit
  • Pinteresta
  • BitBucketa

Django pomaga budować łatwe w utrzymaniu aplikacje, wykorzystując zalety języka Python, umożliwiając szybszy rozwój funkcji. Dzięki odpowiedniej architekturze aplikacji, buforowaniu i dystrybucji baz danych - Django efektywnie skaluje się do potrzeb przedsiębiorstwa.

37. Wyjaśnij, w jaki sposób możesz migrować starsze lub stare bazy danych do Django?

Aby podłączyć starsze bazy danych do Django:

  1. Sprawdź odpowiednio strukturę schematu i modele map
  2. Połącz bazę danych z odpowiednim backendem silnika bazy danych
  3. Użyj inspectdb, aby wygenerować modele z istniejących tabel
  4. Rozwiąż wszelkie różnice w polach, takie jak liczby całkowite i BigIntegerFields
  5. Twórz domyślne migracje i fałszywą początkową populację danych

Menedżerowie modeli niestandardowych pomagają rozszerzać nowe interfejsy, udostępniając wymagane abstrakcje zapytań.
Pozwala to na modernizację starzejących się systemów za pomocą Django wykorzystującego starsze bazy danych, ograniczając jednocześnie ryzyko i przepisywanie.

38. Jak można zaplanować zadania asynchroniczne w tle w aplikacjach Django?

Kilka sposobów konfiguracji zadań w tle:

  • Seler — kolejka zadań Pythona uruchamiająca zadania asynchroniczne
  • Kanały Django - obsługa Websocket i zadań asynchronicznych
  • Django Q - Obietnice i asynchroniczne planowanie zadań

Na przykład z selerem:

|_+_|

Przenoszenie długotrwałych zadań do tła zapewnia szybką realizację żądań.

39. Wyjaśnij względne mocne i słabe strony Django?

Niektóre mocne strony Django:

  • Szybki rozwój dzięki filozofii akumulatorów
  • Domyślnie bezpieczne z ochroną przed exploitami
  • Dobrze skaluje się w poziomie i w pionie
  • Bogaty ekosystem pakietów stron trzecich

Niektóre słabości:

  • Monolityczny — wymuszony cały stos Django
  • Nie zoptymalizowany do zadań przetwarzania dużych ilości danych przez procesor
  • Aktualizacja może być trudna w przypadku różnych wersji

Django wyróżnia się szybkim tworzeniem aplikacji internetowych, chociaż w niektórych problematycznych domenach lepiej pasuje do konkretnych potrzeb.

40. Dlaczego mówi się, że Django charakteryzuje się dużą szybkością programowania?

Oto kilka powodów, dla których Django umożliwia dużą prędkość programowania:

  • Konstrukcja z bateriami, która zapobiega wielotygodniowym kodowaniu
  • Elastyczność Pythona i bogaty ekosystem zwiększają produktywność
  • Relacyjny maper obiektów upraszcza modelowanie
  • Łatwe do testowania i rozwijania iteracyjnie
  • Witryna administracyjna i aplikacje wielokrotnego użytku uruchamiają się szybciej

Możliwość skoncentrowania się na logice biznesowej, a nie na ponownym wymyślaniu podstaw, poprawia doświadczenie programistów i szybkie prototypowanie.

41. W jaki sposób użytkownik może przesyłać pliki i obrazy do aplikacji internetowych Django?

Django zapewnia łatwe procedury obsługi przesyłania plików:

  • Plik lub ImageField w modelu do obsługi przesyłania danych i ścieżek
  • Prześlij pola formularza w połączeniu z logiką widoków
  • Sygnały do ​​przetwarzania przesłanych danych po zapisaniu formularza
  • Uprawnienia, walidacja i procedury obsługi pamięci dostosowują obsługę

Pliki i obrazy można przesyłać na serwer lub do przechowywania w chmurze, np. S3, podczas gdy metadane są śledzone w odniesieniu do odpowiednich modeli w bazie danych.
Miniatury, filtry i procesory umożliwiają zarządzanie przesyłaniem.

42. Wyjaśnij zastosowanie frameworku sesji w Django?

Django zapewnia w pełni funkcjonalne zarządzanie sesjami:

  • Oprogramowanie pośredniczące sesji umożliwia dostęp do sesji między widokami
  • Interfejs Dict umożliwia odczyt i zapis danych sesji
  • Niestandardowe zaplecze pamięci masowej dla tabel lub pamięci podręcznych bazy danych
  • Konfigurowalny czas wygaśnięcia, obsługa plików cookie
  • Podpisane identyfikatory sesji plików cookie lub uwierzytelnianie tokenem

Zapewnia to zarządzanie sesją użytkownika potrzebną dla koszyków, stanem logowania bez konieczności stosowania zewnętrznych sklepów.
Widoki mogą w razie potrzeby odczytywać i zapisywać informacje o stanie w danych sesji.

43. W jaki sposób obsługa wielu najemców jest obsługiwana w aplikacjach Django?

Niektóre sposoby, w jakie Django umożliwia wzorce wielu dzierżawców:

  • Oddzielny schemat bazy danych dla każdego dzierżawcy
  • Udostępniona baza danych z kolumną identyfikatora dzierżawy
  • Ogranicz widoczne dane w tabelach mieszanych, korzystając z zestawów zapytań obsługujących dzierżawców

Oprogramowanie pośredniczące może automatycznie kierować żądania w oparciu o:

  • Domena lub subdomena
  • Token nagłówków żądania zamapowany na dzierżawców
  • Identyfikacja sesji, jeśli została uwierzytelniona

Zapewnia to możliwość skalowania wśród wielu klientów, odpowiednio izolując dane.

44. W jaki sposób można zapewnić tłumaczenia w aplikacjach Django?

Django umożliwia tłumaczenie statycznych ciągów znaków i treści na wiele języków przy użyciu:

  • gettext API - Tłumaczenia maszynowe i ludzkie
  • znaczniki szablonów trans w szablonach dla treści dynamicznie tłumaczonych
  • Pliki tłumaczeń mapowane według kodu języka
  • Zmień preferencje językowe za pomocą oprogramowania pośredniczącego
  • Pluralizacja i warianty kontekstowe obsługiwane poprawnie

Umożliwia to uruchamianie globalnie dostępnych aplikacji obsługujących potrzeby języków regionalnych w przejrzysty sposób przy użyciu systemów internacjonalizacji Django, unikając niestabilności w przypadku treści wielojęzycznych.

45. Jak obsługiwane są daty i godziny w modelach i szablonach Django?

Daty i godziny korzystają z modułu datetime Pythona z obsługą stref czasowych przy użyciu biblioteki pytz.
Niektóre sposoby obsługi dat i godzin:

  • Pole Date/TimeField w modelach
  • Opcje Auto_now/Auto_now_add dla pól samoaktualizujących się
  • Filtry szablonów do formatowania daty, takie jak |_+_|
  • Strefy czasowe w filtrach i modelach zapobiegają niejasnościom
  • Zastępowanie ustawień, takich jak USE_TZ, synchronizuje obsługę czasu na poziomie aplikacji

Bogata obsługa daty i godziny sprawia, że ​​modele tymczasowe i zmiany stanu są łatwe w obsłudze w aplikacjach Django.

46. ​​Wyjaśnij, czym różnią się wersje LTS od najnowszych wersji Django i kiedy należy ich używać?

Django ma wersję z długoterminowym wsparciem wydawaną co kilka lat, taką jak Django 3.2 w porównaniu z najnowszym Django 4:

  • Najnowszy - Najbardziej zaawansowane funkcje, poprawki i aktualizacje
  • LTS - Wypróbowana i przetestowana stabilna wersja otrzymująca poprawki błędów i aktualizacje zabezpieczeń

Przypadków użycia:

  • Najnowsze — projekty typu greenfield oceniające nowe funkcje
  • LTS – Systemy produkcyjne wymagające stabilności bez częstych zmian

Wersje LTS są coraz bardziej akceptowane przez społeczność, co czyni je dobrymi do zastosowań produkcyjnych, w których zależy na stabilności.

47. Jak można obsługiwać migracje baz danych w środowiskach zespołowych?

Kilka wskazówek dotyczących migracji baz danych zespołu:

  • Pliki migracji kontroli wersji
  • Powstrzymaj trywialne migracje przed wprowadzeniem poważnych zmian
  • Użyj przeglądu żądania ściągnięcia do kontroli migracji
  • Oznacz punkty wydania, aby zapewnić przejrzystość wersji migracji
  • Ustaw reguły uruchamiania migracji dla każdego środowiska
  • Twórz skrypty wdrożeniowe, aby kontrolować aplikację migracyjną

Migracje pozwalają zespołom bezpiecznie modyfikować modele, wspólnie utrzymując synchronizację baz danych programistycznych i produkcyjnych.

48. Dlaczego menedżery modeli Django są przydatne i jak definiowane są niestandardowe?

Niestandardowi menedżerowie rozszerzają funkcjonalność modelu QuerySet, obejmującą logikę biznesową, poprawiając separację problemów.
Na przykład PublishedManager w modelu Blog może zdefiniować:

|_+_|

To filtrowanie abstrakcji pozwala na łatwe ponowne wykorzystanie opublikowanej logiki, co pozwala uniknąć rozpraszania logiki pomiędzy widokami.
Menedżerowie umożliwiają czystą, niestandardową enkapsulację poprawiającą spójność.

49. Masz w swojej witrynie Django wizualizacje Matplotlib wymagające dużej wydajności — jak możesz zoptymalizować ich wyświetlanie?

Niektóre sposoby optymalizacji operacji intensywnie obciążających procesor, takich jak generowanie raportów Matplotlib:

  • Przenieś do zadań w tle Selera z wynikami w pamięci podręcznej
  • Obsługuj bezpośrednio statyczne eksporty, zamiast generować je dynamicznie
  • Włącz buforowanie dla uwierzytelnionych użytkowników
  • Rozłóż obciążenie, używając wielu procesów roboczych Django
  • Zoptymalizuj wydajność zapytań do bazy danych
  • Sprawdź konfiguracje renderowania wątków/asynchronizacji Matplotlib

Wyeliminuj ogólne wąskie gardła systemu i zadbaj o to, aby długotrwałe procesy przebiegały asynchronicznie, zapobiegając blokowaniu szybkich reakcji.

50. W jaki sposób włączone jest SEO w witrynach Django i możliwe ulepszenia?

Oto kilka sposobów, w jakie Django pomaga w SEO:

  • Framework generowania sitemap.xml
  • Buforowanie według witryny i widoku pomaga w szybszym indeksowaniu
  • Oprogramowanie pośredniczące pomaga kontrolować nagłówek
  • Procesory kontekstu szablonów upraszczają metadane

Dodatkowo:

  • Zapewnij zoptymalizowane metadane i tagi tytułowe
  • Optymalizacja treści pod kątem sygnałów rankingu wyszukiwania
  • Wysoka wydajność — wykorzystanie buforowania i sieci CDN

Świetna treść, znaczniki metadanych zapewniają widoczność w wyszukiwarkach, a szybkość zapewnia wyższą pozycję w rankingach.

Zobacz Też: