Poniżej znajdują się zadania egzaminacyjne. Każdy blok jest oceniany osobno. Bazą do zadań jest dostarczona prosta aplikacja Django, która wyświetla stronę index.html
zawierającą kilka list z linkami.
Oddanie zadania polega na wysłaniu jednego pliku ZIP na moodle. Plik ten oprócz rozwiązania, powinien zawierać również plik README.md
z instrukcją uruchomienia aplikacji oraz opisem wykonanych zadań.
Dostarczona aplikacja Django jest w katalogu egzapp.
Zadanie:
index.html
dostępną w uruchomionej aplikacji (serwowaną przez tę samą aplikację).<a>
) na tej stronie w formie komunikatu (np. “Liczba linków na stronie: 10”).Zadanie:
Zmodyfikuj istniejącą stronę index.html
oraz jej system stylizacji:
main.scss
. Zdefiniuj w nim:
$primary-color
, $secondary-color
) i jednej rodziny czcionek (np. $font-family-sans-serif
).index.html
.npm scripts
w pliku package.json
do zarządzania procesem budowania stylów:
main.scss
do wynikowego pliku style.css
.Zadanie:
Rozszerz dostarczoną aplikację Django, implementując system uwierzytelniania użytkowników, wykorzystując wbudowany w Django system django.contrib.auth
:
AuthenticationForm
).index.html
) tak, aby była ona dostępna tylko dla zalogowanych użytkowników. Niezalogowani użytkownicy próbujący uzyskać do niej dostęp powinni być automatycznie przekierowywani na stronę logowania (użyj dekoratora @login_required
lub LoginRequiredMixin
).Zadanie:
Do strony index.html
dodaj interaktywność za pomocą TypeScript:
script.ts
).<a>
) na stronie, w konsoli przeglądarki powinna wyświetlić się informacja o długości (liczbie znaków) tekstu zawartego w tym linku.script.ts
do script.js
(np. za pomocą tsc
CLI, dodając odpowiedni skrypt do package.json
). Wygenerowany plik script.js
powinien być dołączony do strony HTML.Zadanie:
Zmodyfikuj aplikację Django, aby implementowała dynamiczne powiadomienia za pomocą Server-Sent Events (SSE):
/sse-random-info/
), który będzie odpowiedzialny za wysyłanie zdarzeń SSE.index.html
:
/sse-random-info/
.<div>
umieszczonym w prawym górnym rogu strony index.html
. Każdy nowy komunikat powinien zastępować poprzedni w tym elemencie.