Pytania twarde z rozmów Django Flashcards
Co to jest Django?
Django to darmowy i open-source’owy framework do tworzenia aplikacji webowych
Django vs Flask
Django pozwala budować duże projekty, podczas gdy Flask wspiera mniejsze aplikacje.
Django reprezentuje bardziej ‘batteries included approach’ co oznacza np. że szablony, panel administratora, czy ORM nie wymagają dodatkowej instalacji.
I możemy tworzyć pełne strony internetowe bez korzystania z wielu dodatkowych narzędzi. Podczas gdy Flask jest bardziej elastyczny i użytkownik może wybrać dowolne narzędzia innych firm zgodnie z własnymi wymaganiami.
Flask jest więc lżejszym i prostszym frameworkiem.
Djago nie ma też wizualnego debuggera jak flask, czyli nie możemy debugować testu podczas gdy jest on wykonywany.
Za to Django posiada swój Bootstrapping-tool, a Flask nie.
ORM
ORM (mapowanie obiektowo-relacyjne , ang. object Relational Mapping)
to konwersja danych pomiędzy obiektowym językiem programowania (Pythonem), a bazą danych (np. PostgreSQL) i odwrotnie
W Django object relational mapper umożliwia nam interakcję z bazą danych bez znajomości języka zapytań (SQL).
Mapper działa jako warstwa abstrakcji pomiędzy modelami, a bazą danych
firmy używających Django
Instagram, DISCUS, Mozilla Firefox, YouTube, Pinterest, Reddit
architektura Django
MVT
Django to framework oparty o model
MVT (Model View Template):
M model (,,model”))
V widok („view”).
T szablon („template”)
Deweloper dostarcza models, views i templates, odwzorowuje je na adresy urls, a następnie Django udostępnia je w postaci aplikacji użytkownikowi.
Model MTV jest oparty na architekturze MVC (Model View Controller).
Django różni się od MVC ponieważ zachowuje własne konwencje. Kontroler jest obsługiwany przez sam framework.
struktura plików/katalogów
manage.py - narzędzie wiersza poleceń, które umożliwia interakcję z projektem Django
__init.py__ pusty plik, który mówi Pythonowi, że bieżący folder powinien być traktowany jako pakiet Pythona
settings.py - plik konfiguracyjny projektu, zawierający ustawienia naszej aplikacji. Są tam określone ustawienia: bazy danych, secret key, zarejestrowane są aplikacje wchodzące w skład naszego projektu i wiele innych
urls.py - tutaj znajdują się wszystkie adresy URL (enpointy, routy) projektu
wsgi.py — to jest punkt wejścia dla naszej aplikacji, który jest używany przez serwery WWW do obsługi utworzonego przez nas projektu.
models
Model w Django odnosi się do klasy, zdefiniowanej w pliku models.py, która odwzorowuje tabelę bazy danych (zwykle 1 klasa to 1 tabela) lub kolekcję bazy danych.
Każdy atrybut tej klasy reprezentuje pole bazy danych.
Każda klasa (model), którą tworzymy dziedziczy po django.db.models.Model
W modelu określamy również typ danych, który będzie zamieszczany w danym polu tabeli. Robi się to za pomocą np, CharField, IntegerField, czy SlugField i zwykle określamy ich wielkość.
templates
templates (szablony) są integralną częścią architektury Django MVT.
Szablony obejmują zarówno pliki HTML jak i CSS oraz js. Przechowujemy w nich zmienne dynamiczne (zmienne i tagi) oraz hardcodowane informacje (np. ciągi tekstowe) wyświetlane pod różnymi adresami url. Pliki te są renderowane przy pomocy widoków (views.py).
Django template language
Pozwala na umieszczenie logiki w plikach szablonów:
{% %}
{{ }}
Zawiera takie konstrukty jak:
- zmienne
- tagi
- filtry
- komentarze
Dzięki temu językowi pliki HTML są bardziej dynamiczne i możemy wstrzykiwać do nich dane.
views
to metody napisane w Pythonie, które przyjmują żądania sieciowe (requesty) i zwracają odpowiedzi sieciowe (web responses).
Takimi odpowiedziami mogą być:
- wyrenderowany HTML danej strony,
- przekierowania
- błędy np. 404
- dokumenty XML
- obrazy itp.
Są dwa rodzaje views:
Function-Based Views ( Widoki oparte na funkcjach): w tym przypadku importujemy nasz widok jako funkcję.
Class-based Views (widoki oparte na klasach): podejście zorientowane obiektowo.
static files
Witryny zazwyczaj muszą udostępniać dodatkowe pliki, takie jak obrazy, pliki JavaScript czy CSS.
W Django pliki te są określane jako „pliki statyczne”. Poza tym Django udostępnia django.contrib.staticfiles do zarządzania tymi plikami statycznymi.
Django Rest Framework (DRF)
Django REST to specjalistyczny framework Python typu open source, który umożliwia budowę zaawansowanych interfejsów API
Dzięki temu programiści mogą budować zarówno proste w obsłudze interfejsy API, jak i skomplikowane systemy REST (Representational State Transfer), które umożliwiają komunikację pomiędzy API a aplikacją czy witryną internetową.
django-admin
django-admin to narzędzie wiersza poleceń Django do zadań administracyjnych.
Jinja templating
Jinja Templating to bardzo popularny silnik szablonów dla Pythona, najnowsza wersja to Jinja2.
Jinja2 − silnik szablonów dla języka programowania Python pozwalający na separację logiki aplikacji od jej warstwy prezentacyjnej.
Co robi?
- generuje szablony HTML znacznie szybciej niż domyślny silnik
- zapewnia łatwiejsze debugowanie w porównaniu z domyślnym silnikiem
- zapewnia też dziedziczenie szablonów
- zapewnia HTML escaping, czyli znaki takie jak <, >, &. mają specjalne wartości w szablonach
- pomaga automatyzować proces testowania (sandbox framework)
django manage.py
narzędzie wiersza poleceń, które umożliwia interakcję z projektem Django