Zaznacz instrukcje i słowa kluczowe, których można używać w szablonach stron WWW w aplikacji Flask:
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
RjUsn02r7E3cA1
Ćwiczenie 2
Zaznacz instrukcje, które wygenerują w szablonie linki do adresów URL o schemacie .../zadania/id_zadania/akcja:
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
R1E56up05FnbS1
Ćwiczenie 3
W celu pokazania w formularzu grupy opcji, z których użytkownik może wybrać kilka, użyjesz:
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
R11BEZlZVIdcU2
Ćwiczenie 4
Zaznacz mechanizmy wykorzystywane do logowania i uwierzytelnienia użytkowników w aplikacji Flask:
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
R1bLyihZFE1k12
Ćwiczenie 5
Uzupełnij poniższy kod tak, aby odczytywał dane przesłane z formularza, sprawdzał czy wybrano jakieś zadanie, a jeżeli tak odczytywał identyfikator użytkownika, datę oraz identyfikatory wykonanych zadań.
Uzupełnij poniższy kod tak, aby odczytywał dane przesłane z formularza, sprawdzał czy wybrano jakieś zadanie, a jeżeli tak odczytywał identyfikator użytkownika, datę oraz identyfikatory wykonanych zadań.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rbab3ATMhJv6q2
Ćwiczenie 6
Uzupełnij poniższy kod w taki sposób, aby zapisywał dane użytkownika w bazie danych lub wyświetlał komunikat o błędzie.
Uzupełnij poniższy kod w taki sposób, aby zapisywał dane użytkownika w bazie danych lub wyświetlał komunikat o błędzie.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
RmyhpwSCqMLM43
Ćwiczenie 7
Uzupełnij, w odpowiedniej kolejności, linijki potrzebne do utworzenia obiektu mysqli Elementy do uszeregowania: 1. );, 2. $user,, 3. $pass,, 4. $host,, 5. $c = new mysqli(, 6. $db
Uzupełnij, w odpowiedniej kolejności, linijki potrzebne do utworzenia obiektu mysqli Elementy do uszeregowania: 1. );, 2. $user,, 3. $pass,, 4. $host,, 5. $c = new mysqli(, 6. $db
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Załączone archiwum blog_v1.zip zawiera katalog blog z plikami aplikacji Blog napisanej we frameworku Flask. Zadaniem aplikacji jest obsługa bazy danych, w której znajdzie się jedna tabela wpisy. Aplikacja obsługuje wyświetlanie, dodawanie, edycję i usuwanie wpisów. Twoim zadaniem będzie dodanie do aplikacji obsługi użytkowników, tak aby każdy wpis miał swojego autora, z wykorzystaniem projektu users przygotowanego w sekcji „Prezentacja multimedialna” na potrzeby aplikacji Restauracja.
Pobierz i rozpakuj archiwum blog_v1.zip. W katalogu blog utwórz wirtualne środowisko języka Python i zainstaluj w nim pakiet Flask w wersji 2.3.2. Następnie wykonaj ćwiczenia.
R2MpJWlKYVzMy
Przycisk z napisem Pobierz załącznik, którego naciśnięcie pobiera plik blog_v1.zip.
Na podstawie poniższej ilustracji zmień i dodaj klauzule SQL zawarte w pliku blog.sql, tak aby w bazie danych tworzone były dwie tabele: users i wpisy. Nie zapomnij o dodaniu za pomocą klauzuli INSERT użytkownika o nicku i haśle admin, co pozwoli na dodawanie i edycję kont innych użytkowników.
R11V440PZjOoF
Ilustracja złożona jest z trzech części. Pierwsza część to dwie tabele. Pierwsza tabela ma nazwę users i w środku ma: id, nick, haslo. Druga tabela ma nazwę wpisy i w środku ma: id, u_id, tytul, tresc, pokaz. Jest połączenie między id z pierwszej tabeli a u_id z drugiej tabeli. Nad połączeniem przy id jest 1, a przy u_id jest n. Druga cześć to dwukolumnowa tabela. Tytuły kolumn to Nazwa pola i Typ pola. Zawartość tabeli jest następująca: id – Integer[INTEGER], nick – Tekst[VARCHAR], haslo – Tekst[VARCHAR]. Trzecia część to dwukolumnowa tabela. Tytuły kolumn to Nazwa pola i Typ pola. Zawartość tabeli jest następująca: id – Integer[INTEGER], u_id – Integer[INTEGER], tytul – Tekst[VARCHAR], tresc – Tekst[VARCHAR], pokaz – Tak/Nie [BOOLEAN].
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Następnie dodaj do aplikacji projekt users, w kodzie projektu usuń wszystkie odwołania do pola grupa, którego w utworzonej na początku tabeli users nie ma.
Uruchom aplikację, zaloguj się na konto admin i dodaj dwóch użytkowników.
Identyfikatory wpisów i użytkowników id powinny być wartościami całkowitymi tworzonymi automatycznie. Pola nick i tytul powinny umożliwiać przechowywanie wartości unikalnych. Wartości wszystkich pól są wymagane. Pole pokaz powinno dopuszczać tylko wartości 0 lub 1. Relacja między tabelami powinna zawierać warunek integralności wymuszający kaskadowe usuwanie rekordów.
Plik users.py należy umieścić w katalogu blog, w pliku app.py należy zaimportować plik projektu i zarejestrować projekt w aplikacji.
Do katalogu templates należy przekopiować wszystkie szablony projektu users z aplikacji Restauracja.
Z projektu users oraz jego szablonów należy usunąć kod związany z obsługą niewykorzystywanego pola grupa. Kod if g.user['grupa'] != 'admin' zastąp kodem if g.user['nick'] != 'admin'.
W szablonie bazowym, base.html, należy umieścić kod generujący linki „Użytkownicy”, „Wyloguj [nick]” dla użytkownika o nicku admin oraz link „Zaloguj” dla użytkownika anonimowego.
Po uruchomieniu aplikacji powinien zostać utworzony plik bazy danych blog.db oraz wyświetlona w przeglądarce strona główna zawierająca komunikat „Brak wpisów”:
R12fgjfgGH8fU
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Wpisy – lista. Niżej są hiperłącza: Blog, Wpisy, Lista, Zaloguj się. Pod spodem jest ramka z napisem Brak wpisów!. Pod nim znajduje się pusta ramka. W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Aplikacja powinna pozwolić na zalogowanie się użytkownika o nicku i haśle admin:
R3UdUAVmJP8MB
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Wpisy – lista. Niżej są hiperłącza: Blog, Wpisy, Lista, Użytkownicy, Wyloguj [admin]. Pod spodem jest ramka z napisami: Zalogowano użytkownika admin! Brak wpisów!. Pod nim znajduje się pusta ramka. W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Formularz dodawania użytkownika:
RC8mXsa8WnakS
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Użytkownik – dodawanie. Niżej są hiperłącza: Blog, Wpisy, Lista, Użytkownicy, Wyloguj [admin]. Pod spodem jest ramka z napisami: Nick, Hasło. Obok Nick jest pole do wpisywania i wpisane jest adam. Obok Hasło jest pole do wpisywania i wpisane jest słowo pod postacią 4 gwiazdek. Obok tego pola znajduje się przycisk Dodaj. W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Lista użytkowników:
Rpnqje1Ul1Bvm
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Użytkownicy. Niżej są hiperłącza: Blog, Wpisy, Lista, Użytkownicy, Wyloguj [admin]. Pod spodem jest ramka z napisami: 1. 1, admin – Edytuj, Usuń; 2. 2, adam – Edytuj, Usuń; 3.3, ewa – Edytuj, Usuń. Słowa Edytuj i Usuń są hiperłączami. W ramce na dole znajduje się podkreślone hiperłącze Dodaj użytkownika. W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
3
Ćwiczenie 9
Po wykonaniu ćwiczenia nr 8 zmodyfikuj plik wpisy.py:
widok opublikowane() powinien odczytywać z bazy danych nie tylko wpisy, ale również powiązane z nimi nicki użytkowników, tak aby w szablonie wpisy_opublikowane.html można było umieścić nazwę użytkownika, który dodał wpis,
wszystkie pozostałe widoki (lista(), dodaj(), edytuj(), usun()) powinny wymagać zalogowania,
widok lista() powinien wybierać z bazy danych tylko wpisy zalogowanego użytkownika,
widok dodaj() powinien zapisywać w tabeli wpisy również identyfikator zalogowanego użytkownika.
Realizacja wymienionych w poleceniu zadań w widokach opublikowane(), lista() i dodaj() wymaga zmiany zapytań SQL.
Wymuszenie zalogowania użytkownika możliwe jest za pomocą dekoratora login_required(), który należy zaimportować do modułu wpisy.py.
Identyfikator użytkownika można odczytać z kontekstu aplikacji, np. obiektu g, który należy zaimportować do modułu wpisy.py
Lista opublikowanych wpisów z nickiem autora na stronie głównej:
R15BJ98pD55K4
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Wpisy – lista. Niżej są hiperłącza: Blog, Wpisy, Lista, Zaloguj się. Pod spodem jest ramka z tekstem. 1. Opublikowane, Lista opublikowanych wpisów zawiera dane autora. (autor: adam). 2. Dodawanie wpisów, Strona wyświetlana po kliknięciu linku „Lista” wymaga zalogowania się i pokazuje wpoisy tylko zalogowanego użytkownika. (autor: ewa). 3. Kto może dodawać wpisy? Wpisy może dodawać każdy użytkownik po zalogowaniu się. (autor: admin). W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Lista wpisów zalogowanego autora:
R13A0nBSOQRwE
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Wpisy – lista. Niżej są hiperłącza: Blog, Wpisy, Lista, Wyloguj [adam]. Pod spodem jest ramka z tekstem. 1. Opublikowane, Lista opublikowanych wpisów powinna zawierać nick autora, opublikowane – Edytuj, Usuń. Dodaj wpis. Słowa Edytuj, Usuń, Dodaj wpis są podkreślone i są hiperłączami. W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Edycja wpisu przez zalogowanego autora:
R1K5b6nhtIl5E
Zrzut ekranu przedstawia stronę internetową. Na środku jest napis. Blog. Wpis – edycja. Niżej są hiperłącza: Blog, Wpisy, Lista, Wyloguj [adam]. Pod spodem jest ramka zawierająca Tytuł z wpisanym Opublikowane, Treść z wpisanym Lista opublikowanych wpisów, z zaznaczoną opcją Opublikowany i przycisk Zapisz. W prawym dolnym rogu znajduje się napis. Wykonano w aplikacji Flask v. 2.3.2. Nazwa aplikacji jest hiperłączem.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Archiwum blog_v2.zip zawierający kompletny kod aplikacji Blog:
R17XhFoEILRdb
Przycisk z napisem Pobierz załącznik pobierający plik o nazwie blog_v2.zip.