Tematy zadań
1. Blog uruchomiony na PaaS
- należy utworzyć repozytorium o nazwie
aplikacje-internetowe-dane-185ic
, gdzie zamiast ‘dane’ wpisujemy nazwisko lub nr indeksu; będzie ono podstawą zaliczenia przedmiotu, - w ww. repozytorium umieszczamy kolejne zrealizowane zadania w osobnych folderach i z osobnymi plikami README.md,
- strona źródłowa do realizacji tego zadania,
- poniższe zagadnienia powinny zostać zrealizowane:
- instalacja pakietów i tworzenie projektu,
- korzystanie z serwera deweloperskiego,
- modele, migracje i ORM,
- ustawienia projektu,
- tworzenie superusera i panel admina,
- tworzenie aplikacji w Django,
- QuerySets i menadżery obiektów,
- praca z plikami views.py, urls.py i szablonami,
- praca z formularzmi (dodawanie posta, edycja istniejącego posta),
- blog umieszczamy na platformie typu PaaS (np. Heroku lub inna, np. Python Anywhere),
- plusy za opracowanie widoku do usuwania postów,
- dla Heroku konieczna będzie instalacja Heroku-CLI.
2. Rejestracja użytkowników
- należy wykorzystać wbudowane widoki uwierzytelniające
- należy zrealizować następujące operacje:
- widoki ‘login’ i ‘logout’
- widok od zmiany hasła (PasswordChangeView)
- widok od resetu hasła (PasswordResetView)
- do ww. widoku należy użyć ConsoleBackend do wysyłania maili i porobić zrzuty ekranu
- plus za widok realizujący rejestrację usera (signup),
- plus za wrzucenia apki na wybrany PaaS.
3. Różne sposoby uwierzytelniania
- uwierzytelnianie przez social media i za pomocą wbudowanych backendów (username lub email),
- należy dodać dwa dowolne backendy uwierzytelniające do listy AUTHORIZATION_BACKENDS (np. Facebook i Twitter),
- konieczne będzie utworzenie aplikacji ww. portalach,
- plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w aplikacji.
- plus za próbę wrzucenia apki na wybrany PaaS.
4. REST API z DRF
- Django Rest Framework,
- zezwolenia,
- Swagger,
- serializery,
- należy przeanalizować i wdrożyć kod z repozytorium do zajęć,
- plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w projekcie,
- proponowane modyfikacje to np. nowa aplikacja, nowe API (v2), opcja wyszukiwania, sprawdzenie innych serializerów, widoków, viewsets’ów, router’ów itp.
5. Web Scraping
- krótki wstęp do web scrapingu z Pythonem,
- krótki wstęp do web scrapingu z BS4,
- Beautiful Soup,
- XPath i lxml,
- należy przeanalizować i wdrożyć kod z repozytorium do zajęć, na innych stronach niż te z przykładów,
- konieczna jest analiza struktury strony, żeby wybrać odpowiednie elementy (w tym znaczniki HTML) do scrapowania,
- plusy ➕ za implementację wyszukiwania elementów do scrapowania za pomocą Django, np.:
- należy utworzyć prosty formularz z jednym polem do wpisania elementu do wyszukania (scrapowania),
- należy kod z zajęć umieścić w pliku views.py, w wybranym widoku,
- wyniki scrapowania należy przekazać w funkcji render() do wybranego szablonu HTML i je tam wyświetlić,
- plusy ➕ za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w projekcie.
6. Zezwolenia i uwierzytelnianie w DRF
- to kontynuacja lab. nr 4,
- viewsets,
- routers,
- uwierzytelnianie (basic, session, token),
- do poczytania 📕 📖 świetny artykuł o autoryzacji dla zestawu Django + DRF + React,
- do poczytania o zastosowaniu JWT,
- należy przeanalizować i wdrożyć kod z repozytorium do zajęć,
- plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w projekcie,
- plus za implementację prostego licznika wizyt z użyciem cookies (p. 11.5 w linku, ale wstęp też jest przyjemny do analizy),
- cookie można ustawić w dowolnym widoku, nie trzeba (ale można) tworzyć nowego widoku w tym celu, tutaj drugi link do przykładu z cookie,
- proponowane modyfikacje to np. nowa aplikacja, nowe API (v2), opcja wyszukiwania, sprawdzenie innych serializerów, widoków, viewsets’ów, router’ów itp.
7. Python + Redis + Django
- oficjalna strona Redisa,
- seria artykułów o współpracy Python-Redis,
- należy przerobić zadania zawarte w powyższych artykułach i dodać je do swojego repo,
- nie jest konieczna instalacja Redisa za pomocą Dockera, wystarczy standardowa instalacja, jak pokazano w poniższych linkach,
- oprócz instalacji
redis-server
konieczna jest instalacja pakieturedis
poprzez ‘pip’, co również jest pokazane w ww. artykułach, - najwygodniej jest podzielić się zadaniami, żeby przyspieszyć pracę z Redisem,
- sposób instalacji dla systemów Windows,
- repo z ww. artykułu oraz instalki,
- tutorial o współpracy Python + Redis,
- do przerobienia przykład współpracy Django + Redis + Celery,
- praca z workerami w Celery w Celery,
- praca z Celery Beat,
- należy przeanalizować, zmodyfikować i wdrożyć kod z ww. strony w wybranym prze siebie celu,
- plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w aplikacji (standardowe taski oraz taski okresowe w Celery, dodawanie tasku za pomocą wybranego zdarzenia, itp.).
8. Czat z użyciem Web Socket + Web Workers
-
part I:
- szybkie wyjaśnienie idei WebSockets,
- więcej szczegółów na javascript.info,
- modułws z Node.js,
- czym jest WSGI?,
- od Django 3.0 możemy również korzystać z zalet ASGI (Asynchronous Server Gateway Interface),
- gdzie można korzystać z ASGI,
- przykład chata z wykorzystaniem django-channels,
- przykład z wykorzystaniem django-channels do analizy i realizacji,
- przykład z wykorzystaniem socket.io do budowy czata,
- należy przejrzeć materiały z powyższych stron oraz wdrożyć przykład z wybranego linku z django-channels lub socket.io, przy okazji komentując najważniejsze elementy kodu.
-
part II:
- wyjaśnienie idei stosowania Web Workerów,
- praca z Web Worker’ami,
- należy zwrócić uwagę na typowe dla Workerów elementy: event listener
onmessage
i funkcjępostMessae()
, - należy wdrożyć dwa Web Workery, z których każdy wykonuje “czasochłonne” obliczenia, np. obliczanie liczby ciągu Fibonnaciego.
-
plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w kodzie.
9. Django + React (aplikacja CRUD)
- backend napisany w Django,
- frontend napisany za pomocą React.js,
- biblioteka ‘axios’ użyta do “konsumowania” API wystawionego np. przez DRF,
- przykład aplikacji CRUD z wykorzystaniem Django i React’a,
- należy przeanalizować i wdrożyć kod z ww. poradnika,
- plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w aplikacji.
10. Django + React (aplikacja typu ToDo)
- backend napisany w Django,
- frontend napisany za pomocą React.js,
- biblioteka ‘axios’ użyta do “konsumowania” API wystawionego np. przez DRF,
- przykład aplikacji To-Do z wykorzystaniem Django i React’a,
- należy przeanalizować i wdrożyć kod z ww. poradnika,
- plusy za własne przemyślenia, analizę dokumentacji i idące za nimi modyfikacje w aplikacji.
Zasady zaliczenia przedmiotu
- Dowolny język do realizacji zadania, ale preferowany zestaw to Python + Django. Inne opcje po konsultacji z prowadzącym.
- Zadanie należy zrealizować do kolejnych zajęć - max. 5 punktów:
- do tygodnia opóźnienia w realizacji zadania - max. 3 punkty,
- przekroczenie obu terminów - max. 1 punkt,
- ww. daty wskazane są w pliku z ocenami.
- Zrealizowane zadanie należy umieścić na portalu GitHub (lub innym) i wysłać link do prowadzącego (Slack).
- Zadanie należy zaprezentować osobiście prowadzącemu na laboratorium (zdalnie popre udostępnianie ekranu).
- Pierwsze laboratorium jest “rozruchowe” - można oddawać zadania, ale nie trzeba.
- Brak odpowiedniej liczby punktów spowoduje konieczność stworzenia nowych projektów.
- Do każdego zadania dobrze jest dodać pliki (dodać do repozytorium) zawierające zrzuty działającej aplikacji. Przyspieszy to proces sprawdzania.
- Brak znajomości utworzonej aplikacji powoduje obniżenie oceny.