Budowanie zaawansowanych aplikacji webowych za pomocą framework a Django
|
|
- Julia Leśniak
- 6 lat temu
- Przeglądów:
Transkrypt
1 Kierunek studiów: Informatyka Specjalność: Technologie informacyjne i internetowe Nr albumu: Dominik Nowakowski Budowanie zaawansowanych aplikacji webowych za pomocą framework a Django Building advanced web applications using framework "Django" Praca inżynierska napisana pod kierunkiem dr Krzysztofa Krzywdzińskiego Poznań 2017
2 Poznań, dnia... OŚWIADCZENIE Ja, niżej podpisany/a Dominik Nowakowski student Wydziału Matematyki i Informatyki Uniwersytetu im. Adama Mickiewicza w Poznaniu oświadczam, że przedkładaną pracę dyplomową pt: Budowanie zaawansowanych aplikacji webowych za pomocą framework a Django napisałem samodzielnie. Oznacza to, że przy pisaniu pracy, poza niezbędnymi konsultacjami, nie korzystałem z pomocy innych osób, a w szczególności nie zlecałem/am opracowania rozprawy lub jej części innym osobom, ani nie odpisywałem tej rozprawy lub jej części od innych osób. Oświadczam również, że egzemplarz pracy dyplomowej w wersji drukowanej jest całkowicie zgodny z egzemplarzem pracy dyplomowej w wersji elektronicznej. Jednocześnie przyjmuję do wiadomości, że przypisanie sobie, w pracy dyplomowej, autorstwa istotnego fragmentu lub innych elementów cudzego utworu lub ustalenia naukowego stanowi podstawę stwierdzenia nieważności postępowania w sprawie nadania tytułu zawodowego. [ ]* - wyrażam zgodę na udostępnianie mojej pracy w czytelni Archiwum UAM [ ]* - wyrażam zgodę na udostępnianie mojej pracy w zakresie koniecznym do ochrony mojego prawa do autorstwa lub praw osób trzecich *Należy wpisać TAK w przypadku wyrażenia zgody na udostępnianie pracy w czytelni Archiwum UAM, NIE w przypadku braku zgody. Niewypełnienie pola oznacza brak zgody na udostępnianie pracy.... 1
3 Spis Treści Wstęp...4 Abstract Framework Django Wstęp Charakterystyka framework a Django Podstawowa struktura projektu Django Folder główny Django Foldery aplikacji Static i Media Manage.py Architektura projektu Tworzenie nowego projektu Tworzenie wirtualnego środowiska Wymagania Utworzenie nowego projektu Tworzenie nowej aplikacji Baza danych i modele Łączenie z bazą danych Migracje Modele Struktura bazy danych ORM w Django URL Działanie URL w Django Definiowanie adresów URL Przekierowywanie adresów URL do aplikacji Widoki Definiowanie widoków Dekoratory Widoki na bazie klas..24 2
4 5 Formularze Standardowe formularze HTML, a Django Formularze Django Tworzenie formularza Django Użycie formularza w widoku Użycie formularza w szablonie Formularze na bazie Modeli Szablony Zmienne Tagi Panel Administracyjny Django Rest Framework Serializacja Widoki na bazie serializatora Tworzenie URL dla REST API Interfejs Integracje USOS Facebook SMTP..44 Podsumowanie...46 Bibliografia
5 Wstęp Strony internetowe już dawno przestały pełnić rolę encyklopedii gdzie możemy tylko odczytać zdefiniowaną w nich przez autora treść. Obecnie takie podejście do robienia stron dopuszczalne jest wyłącznie do bardzo małych i prostych stron mających na celu na przykład przedstawienie firmy - choć nawet i tutaj zalecane jest zupełnie inne podejście. Dzisiejsze strony internetowe stawiają na interakcje z użytkownikami. Zamiast wyświetlania tych samych danych dla każdego użytkownika, aplikacje internetowe dla niego przetwarzają i generują dane zależnie od podjętych czynności. Im prostsza jest interakcja dla użytkownika (powinno dążyć się do zautomatyzowania jak największej liczby czynności), generująca przy tym jak najbardziej pożądane przez niego dane - tym lepiej. Niniejsza praca przedstawia proces tworzenia zaawansowanych aplikacji webowych w języku programowania python z wykorzystanie frameworka Django na przykładzie portalu ElStudent. Główne założenia portalu ElStudent: Dostęp do portalu wymaga aktywnego konta użytkownika. Aktywne konto uzyskuje się po rejestracji przez formularz, lub portal Facebook, a następnie integracji z systemem USOS, Na podstawie integracji z systemem USOS użytkownik, czyli aktywny student przypisywany jest do odpowiednich grup zajęciowych i kierunków studiów, Użytkownik na stronach zajęć i kierunków prowadzić może dyskusję z innymi uczestnikami publikując posty, lub notatki, Użytkownik może wyszukiwać i dodawać/usuwać/zapraszać innych użytkowników do swoich znajomych, Użytkownik może uzupełnić swój profil danymi takimi jak umiejętności czy doświadczenia, oraz oglądać profile innych użytkowników, Użytkownik dostaje powiadomienia o aktywności innych powiązanych z nim użytkowników, Użytkownik ma możliwość kontaktu z administratorami, Użytkownik może mieć nadane prawa moderatora i dostęp do panelu zarządzania, Użytkownik ma dostęp do komunikatora utworzonymi pokojami na podstawie jego danych, Interfejs jest lekki i przejrzysty, strona jest responsywna i zrobiona pod kątem łatwego SEO, Strona jest dynamiczna tzn. za pomocą integracji REST API z AngularJS nowe dane wyświetlane są użytkownikowi bez konieczności przeładowywania strony, Strona jest zabezpieczona przed atakami różnego typu, a także przed wyciekiem danych. 4
6 Abstract Websites are no longer play the role of an encyclopedia where you can only read defined by the author content. Currently, such an approach to make websites is acceptable only for a very small and simple sites aimed for example, presentation of the company - though even here it is recommended a completely different approach. Today's websites rely on interactions with users. Instead of displaying the same data for each user, web-based applications in response generate data depending on the action taken. The simpler the interaction to the user (should automate as many steps as possible), generating at the same time as most desired data - the better. This thesis presents the process of creating advanced Web applications in the programming language Python with using Django framework based of the portal ElStudent. The main assumptions of the portal ElStudent: Access to the portal requires an active user account. Active account obtained after the registration form, or portal Facebook, and integration with USOS after it, Based on integration with USOS user, which is an active student is assigned to the relevant courses and programmes, User on courses and programme pages can lead discussions with other participants by publishing posts, or notes, The user can search and add / delete / invite other users to their friends, The user can fill up your own profile data such as skills and experience, and view profiles of other users, The user gets a notification about the activity of other associated users, The user has the possibility of contact with the administrators, User may have given moderator privileges and access to the management interface, User have access to chat module with created rooms based on its data, The interface is light and transparent, the site is responsive and made for easy SEO, The website is dynamic, ie. it using the REST API for integration with angularjs - new data are displayed for a user without reloading the page, This page is protected against attacks of various types, as well as against data leakage. 5
7 1. Framework Django 1.1 Wstęp Django jest to darmowy framework przeznaczony do tworzenia aplikacji internetowych. Swoje początki ma pod koniec 2013 roku. Głównym celem Django jest uproszczenie pisania aplikacji internetowych zasilanych przez bazy danych. Framework sam w sobie zasilony jest najważniejszymi podstawowymi funkcjonalnościami, które powtarzają się na niemalże większości stron. Twórcy jednak skupili się na bardzo łatwym instalowaniu dodatkowych aplikacji tworzonych przez innych użytkowników co czyni potencjał Django niemalże nieograniczonym. Świadczy o tym chociażby używanie w całości lub części tego framework a przez portale jak: instagram, disqus, spotify, nasa, bitbucket, prezi 1.2 Cechy Django: Django nie jest standardowym framework iem MVC (Model-View-Controller). Choć można go tak nazwać, twórcy wolą określenie MTV (Model-Template-View). Wynika to z tego, że w MVC widok odpowiada za nie za to jak dane są prezentowane, a jedynie kiedy. W przypadku Django widok to funkcja w języku Python, która jest odpowiedzią na wywołanie danego URL i definiuje jakie dane są prezentowane. Widok także odwołuje się do szablonu, który dopiero pokazuje jak dane są przedstawiane użytkownikom. Odpowiednikiem kontrolera natomiast jest framework sam w sobie, a dokładniej mechanizm wysyłający zapytania do widoku na podstawie URL. Darmowy na otwartej licencji BSD, Współpraca z Apache za pomocą WSGI, oraz innymi serwerami przy użyciu protokołów FastCGI, oraz SCGI, Posiada wsparcie dla budowania aplikacji wielojęzykowych, Wzoruje się bardzo dużą wydajnością w stosunku do obciążanie, Wspiera wiele metod cache owania, Posiada wbudowany serwer służący do rozwijania aplikacji i jej testowania, Bardzo prosty i wydajny system szablonów zarówno dla programistów back-end jak i front-end, 6
8 Używa zasady DRY w budowaniu aplikacji internetowych, mówiącej o jak najczęstszym unikaniu powtarzania funkcjonalności (np. używa wiele klas,metod i funkcji z języka python), ORM pozwala użytkownikom na stworzenie wydajnych i bezpiecznych baz danych bez dużej znajomości SQL, Współpracuje z wieloma rodzajami baz danych takimi jak MySQL, PostgreSQL, SQLite, Oracle czy MSSQL, Wraz z projektem tworzony jest kompletny panel administracyjny z możliwością dostosowania go do własnych potrzeb, 1.3 Podstawowa Struktura Django W tym rozdziale omówiona została struktura Django na przykładzie projektu ElStudent. Trzymanie się struktury projektu wytyczonej przez standardy ma wiele korzyści, wśród nich wymienić można uporządkowane pliki i foldery dzięki czemu łatwo odnaleźć szukany cel czy też zgodność z innymi członkami zespołu. 7
9 1.3.1 Folder główny Django Jest to najważniejszy folder naszego projektu, zawiera wszystkie niezbędne dane wspólne dla całego projektu. Podstawowe pliki folderu głównego to: init.py - Jest to pusty plik mówiący Python owi o tym, że folder jest pakietem Python a, settings.py - Kluczowy plik projektu, zawierający wszystkie jego ustawienia i dane konfiguracyjne. Zdefiniować tam możemy na przykład: nasze połączenie z bazą danych, sposób zarządzania sesjami, szablonami, nasze aplikacje, urls.py - W tym pliku możemy przypisać widoki zależnie od wywołanego URL, dobrym sposobem użytym w tym projekcie jest przekierowanie stąd ruchu do pliku urls.py w aplikacjach gdzie dopiero można przypisać URL do danego widoku, wsgi.py - Plik służący do integracji naszego projektu z WSGI (ma to zastosowanie w ustawianiu naszego projektu na serwerze) Foldery aplikacji Są to pakiety Python a służące określonemu przez nas celowi. Są zależne od folderu głównego, który jest wspólnym mostem łączącym wszystkie aplikacje. 8
10 Podstawowe pliki folderu aplikacji: init.py - Dokładnie tak samo jak w folderze głównym jest to pusty plik mówiący Python owi o tym, że folder jest pakietem Python a, admin.py - Plik służący do konfiguracji aplikacji z panelem administracyjnym Django, forms.py - Plik zawierający formularze Django, models.py - Tutaj można zdefiniować nasze modele, urls.py - Jeżeli jest przekierowanie ruchu z urls.py folderu głównego tutaj, jest to miejsce gdzie bezpośrednio możemy przypisać widoki do adresów URL, w przeciwnym wypadku ten plik jest zbędny gdyż będziemy zajmować się tym już w katalogu głównym views.py - Plik w którym można definiować widoki migrations - Katalog zawierający pliki opisujące wszystkie nasze migracje danych do bazy danych, static - Katalog z plikami statycznymi aplikacji, templates - Katalog z szablonami naszej aplikacji Static i Media Static - jest to katalog zawierający wszystkie pliki statyczne zbierane z katalogów static poszczególnych aplikacji. Media - katalog ten zawiera wszystkie pliki, które nie są stałą zawartością projektu. Przeważnie służy on do przechowywania plików przysłanych przez użytkowników projektu Manage.py Jest to niezwykle użyteczne narzędzie działające z linii poleceń. W zależności od danego polecenia pozwala na interakcje z naszym projektem na wiele sposobów. 1.4 Architektura Projektu Dobra architektura projektu pozwala na spójny i szybki przepływ danych co bezpośrednio przekłada się na wydajność i efektywność projektu. Ważne jest prawidłowe połączenie warstw logicznych, a także poza framework iem dobrze zaplanować użycie innych komponentów. 9
11 Na żądanie użytkownika (wejście na dany adres URL/wykonanie specyficznej akcji) framework Django generuje właściwą odpowiedź na podstawie architektury pokazanej powyżej. Wszystkie nasze dane znajdują się w bazie danych ( w projekcie ElStudent jest to baza danych MySQL). Aby umożliwić połączenie Django z bazą danych potrzebna jest aplikacja do języka python umożliwiająca nawiązanie tego połączenia - w tym projekcie wybór padł na aplikacje mysqlclient. 10
12 Dane z bazy danych przetwarzane są przez ORM -Object Related Mapper. Jest to biblioteka frameworka, która ma na celu zautomatyzowanie transferu danych zawartych w relacyjnych bazach danych do obiektów języka python. Dalej nasze dane przechodzą przez wspomniany już wcześniej model MVT. Model jest definicją naszego obiektu opisującego strukturę, oraz relacje w naszej bazie danych. Gdy nasze informacje z bazy danych są pobierane i przetwarzane w obiekty trafiają do odpowiedniego widoku. W widoku należy zdefiniować przetwarzanie tych danych, oraz naszą odpowiedź do użytkownika. Odpowiedzią tą może być, choć nie musi - odpowiedni szablon, do którego umieścić możemy dane generowane z widoku, czy też wczytać pliki statyczne i medialne. Odpowiedź ta wyzwalana jest przez URL, gdzie wraca do użytkownika wysyłającego żądanie. Powyżej opisana została podstawowa architektura frameworka Django. Możliwość łatwej integracji zarówno z dodatkowymi aplikacjami Django jak i tymi zewnętrznymi umożliwia nam niemal nieograniczone rozbudowywanie tejże architektury. Projekt ElStudent wzbogacony został dodatkowo w: Formularze Django, które łatwo integrują się z naszymi modelami, następnie trafiają do odpowiedniego widoku, który umieszcza je w szablonach gdzie przekształcane są w odpowiadające im formularze HTML, Django Rest Framework, służący do generowania aplikacji typu REST. W widoku pobieramy nasze dane z bazy danych na podstawie modelu następnie trafiają one do serializatora, który mówi jak te dane mają być reprezentowane w aplikacji typu REST. AngularJS, pobierający dane z naszych aplikacji REST i wyświetlający je na bieżąco w naszych szablonach, Django Channels, aplikacja służąca podobnie jak wyżej wymieniony AngularJS do dynamicznego przesyłania danych w szablonie użyta w projekcie ElStudent do komunikatora 1.5 Tworzenie Projektu Django Ideą framework a Django jest możliwość szybszego tworzenia tak samo zaawansowanych aplikacji internetowych niż najbardziej popularne konkurencyjne frameworki. Kierując się właśnie tym, większość mechanizmu powstawania nowego projektu jest zautomatyzowana. Dzięki temu od użytkownika wymagana jest bardzo mała ilość pracy, a projekt powstaje bardzo szybko. 11
13 1.5.1 Tworzenie wirtualnego środowiska Wirtualne środowisko jest nam potrzebne do wyodrębnienia specjalnego środowiska python a wyłącznie dla naszego projektu. Dzielenie jednego środowiska pythona dla wielu projektów może powodować wiele konfliktów - począwszy od samej wersji python a. Nie wspominając już o umieszczaniu projektu na hostingu dzielonym gdzie nie mamy dostępu do modyfikowania głównego środowiska. Wirtualne środowisko możemy stworzyć komendą: virtualenv - p python3 venv Następnie w celu użycia należy aktywować komendą: source / scieżka / do /venv/ bin / activate Wymagania Żeby przejść do tworzenia projektu Django musimy spełnić określone wymagania. Poza odpowiednią wersją pythona potrzebne są dla projektu ElStudent: Do ich instalowania zalecany jest wbudowany w najnowsze wersje pythona zarówno 2 i 3 - pip. W celu łatwiejszego deponowania projektu u innych developerów jak i na serwerze dobrą metodą jest zapisywanie listy wymagań w pliku requirements. Tym samym możemy bardzo szybko zainstalować wszystkie niezbędne aplikacje jedną komendą: pip install - r requirements. txt 12
14 1.5.3 Utworzenie nowego projektu Nowy projekt tworzymy komendą: django - admin startproject Nazwa_Projektu W tym momencie framework stworzy nam nowy projekt z podaną przez nas nazwą. Zawarte w nim będą folder główny projektu z domyślnymi plikami i ustawieniami, manage, oraz panel administracyjny. Projekt możemy uruchomić lokalnie dzięki wbudowanemu serwerowi developerskiemu Django: python manage. py runserver 1.6 Tworzenie nowej aplikacji Nową aplikację stworzyć możemy komendą: python manage. py startapp nazwa_aplikacji Podobnie jak przy tworzeniu projektu utworzy nam się folder aplikacji z podstawową strukturą i domyślnymi danymi. Aby projekt wiedział, że ma traktować ten folder jako swoją aplikację do INSTALLED_APPS w pliku settings.py należy dodać jej nazwę. 13
15 2. Baza danych i modele Odpowiednia struktura i relacje bazy danych projektu są najważniejszym etapem projektowania aplikacji internetowej. O ile często można zmienić lub poprawić dany komponent nawet po wdrożeniu projektu, na wypełnionej danymi bazie danych każda zmiana może okazać się niemożliwą bądź bardzo trudną operacją. Django posiada narzędzia pozwalające tworzyć rozbudowane bazy danych i przeprowadzać na nich zaawansowane operacje bez znajomości specyficznych dla nich języków jak SQL. 2.1 Łączenie z bazą danych Przed połączeniem z bazą danych musimy upewnić się, że mamy zainstalowaną odpowiednią aplikację do python a umożliwiającą to połączenie. Następnie możemy przystąpić do połączenia do bazy danych, co odbywa się przez zdefiniowanie odpowiednich ustawień w pliku settings.py Definicje naszego połączenia należy zacząć od podania nazwy reprezentatywnej naszej bazy danych dla projektu Django, następnie w klamrach podajemy niezbędne dane i opcje połączenia. Oczywiście dla względów bezpieczeństwa projektu dane te zostały ukryte. 2.2 Migracje Po zdefiniowaniu naszego połączenia Django do prawidłowego działania potrzebuje umieścić w niej swoje tabele. Uruchamiając polecenie python manage. py migrate - framework wprowadzi odpowiednie zmiany w bazie danych. Przy pierwszym uruchomieniu Django wykryje brak podstawowych tabel. Aby wiedział jakie zmiany należy wnieść na podstawie naszych modeli i aplikacji trzeba porównać strukturę naszego projektu ze 14
16 strukturą bazy danych. Można to zrobić poleceniem python manage. py makemigrations, które wygeneruje wszystkie niezbędne informacji do migracji w folderach migrations odpowiednich aplikacji. Z tych plików polecenie python manage. py migrate odczyta niezbędne instrukcje. 2.3 Modele Modele należy zdefiniować w pliku o nazwie models.py w folderach aplikacji. Każdy model jest klasą języka python, która jest subklasą django. db. models. Model Każdy atrybut definiuje kolumnę w bazie danych Każdy model definiuje tabelę w bazie danych Powyższy przykład demonstruje stworzenie modelu dla kierunku studiów w portalu ElStudent. Atrybuty zostaną określone używając metody klasy models (należy je określić jako pola - fields). Są to na przykład: CharField - Pole na string, TextField - Pole na string - lepiej przystosowany do długiego stringa, ForeignKey - Pole z kluczem obcym do innego modelu, IntegerField - Pole na liczbę, BooleanField - Pole przyjmujące dwie wartości False - fałsz/true - prawda ImageField - Pole na zdjęcie, FileField - Pole na plik, DateTimeField - Pole na szczegółową datę i czas I wiele innych zdefiniowanych w dokumentacji framework a Dodatkowo na koniec została dodana reprezentacja naszego modelu. Dzięki temu między innymi w adminie, zamiast programme_object można ujrzeć jego nazwę co bardzo ułatwi jego identyfikacje. Powyższy przykład po zrobieniu migracji wprowadzi do bazy danych następujące polecenie: 15
17 CREATE TABLE programme ( "id" serial NOT NULL PRIMARY KEY, "name" varchar ( 30 ) NOT NULL, "usos_id" varchar ( 30 ) NOT NULL ); Warto dodać, że jak widać w powyższym przykładzie, framework dodaje własnoręcznie atrybut id będący kluczem głównym tabeli, jeżeli taki nie został zdefiniowany w modelu. 2.4 Modele projektu ElStudent Modele projektu ElStudent zaprojektowane są z uwzględnieniem wszystkich potrzeb aplikacji. Odpowiednie relacje pozwalają połączyć dane zapisane w różnych tabelach w spójną całość. 16
18 Powyżej zamieszczone zostały modele aplikacji UserProfile. Na samej górze przytoczony został wbudowany model frameworka Django - User. Jego atrybuty nie są dla nas wystarczające dlatego należy rozszerzyć klasę User, klasą UserProfile umieszczając unikalny klucz obcy do klasy User. Samo rozszerzenie użytkownika o klasę UserProfile nie było wystarczające, ponieważ należało w bazie umieścić dane, które posiada ta klasa jednak one wymagały własnych atrybutów, dlatego klasę UserProfile rozszerzono kolejnymi modelami. Model LoggedUser jest to model zawierający tylko zalogowanych userów. Poprzez dopisanie do modeli odpowiednich metod usuwających obiekty użytkowników przy wylogowywaniu i tworzących przy logowaniu. 17
19 Kolejny schemat modeli przedstawia nam aplikację programme odpowiadającą za kierunki projektu Django. Przez pole ManyToManyField w UserProfile wiemy do jakich kierunków należy dany użytkownik. Program sam w sobie zawiera tylko nazwę i id z systemu USOS, który jest jego unikalnym identyfikatorem. Oczywiście sam Programme to dla nas za mało. Pojawi się chęć w kierunkach zamieszczać posty, komentarze do tych postów, oraz pliki. Dlatego odpowiednio należy rozszerzyć te modele. Kolejny schemat pokazuje nam model dla aplikacji obsługującej nasze zajęcia. Działa on na tej samej zasadzie, z tą różnicą, że do Course czyli model reprezentatywny naszych zajęć powinniśmy umieścić informacje o semestrze i slug - unikalny identyfikator dla URL. Także dodać model dla Notatek. 2.5 ORM w Django ORM w Django należy używać za pomocą QuerySet. Są to polecenia umożliwiające nam odczytanie informacji z bazy danych, a wynik otrzymać w postaci obiektów. 18
20 Przetestować nasz QuerySet możemy za pomocą interaktywnej konsoli Django, a uruchomić ją możemy za pomocą: python manage. py shell Na początku należy zaimportować modele, które mamy zamiar użyć. Składnia importowania modeli czy też innych składowych danej aplikacji wygląda następująco: from nazwa_aplikacji. nazwa_pliku import nazwa_funkcji / zmiennej / klasy Aby uzyskać dostęp do wszystkich obiektów danego modelu należy użyć: Nazwa_Modelu. objects. all () Za pomocą get możemy uzyskać pojedynczy obiekt zamiast listy obiektów Nazwa_Modelu. objects. get ( atrybut = warto ść) Gdy chcemy zawęzić nasze poszukiwania możemy użyć filtra: Nazwa_Modelu. objects. filter ( atrybut = warto ść) W powyższym przykładzie należy importować modele dla zajęć i profilu. Następnie wyświetlić wszystkie zajęcia, po czym do zmiennej queryset przypisać profil użytkownika o id równym 1. Za pomocą tego profilu możemy wyświetlić wszystkie zajęcia do jakich użytkownik o id profilu równym 1 jest przypisany. Prócz wymienionych powyżej metod all, filter, get - QuerySet w Django posiada o wiele więcej metod co czyni go potężnym narzędziem do wyciągania informacji z baz danych. Są to na przykład: reverse - zwracane obiekty będą uporządkowane w odwrotnej kolejności, distinct - zwraca tylko unikalne obiekty bez duplikatów, values - zwraca słownik zamiast obiekt, select_related - odrazu przy wywoływaniu odczytuje wartości modeli odnoszonych przez klucze obce, raw - pozwala na użycie języka SQL w zapytaniu, 19
21 delete - usuwa dane z bazy danych, create - tworzy nowy obiekt i zapisuje go w bazie danych, save - zapisuje dany obiekt order_by - pozwala na sortowanie według podanego atrybutu 20
22 3. URL W każdym projekcie odpowiedni schemat adresów URL jest jak najbardziej pożądany. Django pozwala na bardzo łatwe dostosowywanie tychże adresów do swoich potrzeb. Aby tego dokonać dla danej aplikacji, potrzebny jest moduł python a zwany URLconf. Moduł ten jest czystym kodem języka python i łącze wzorce URL (wyrażane wyrażeniami regularnymi) do funkcji języka python - czyli naszych widoków. Adresy URL mogą być dowolnie krótkie, lub długie. Także dzięki wyrażeniom regularnym mogą być tworzone dynamicznie. 3.1 Działanie URL w Django Kiedy użytkownik wchodzi pod podany adres URL w swojej przeglądarce wysyła zapytanie do naszego frameworka. Zapytanie to obsługuje następnie algorytm: 1. Django odczytuje z ustawień jakiego modułu URLconf powinien użyć. 2. Następnie wczytuje ten moduł i z pliku urls.py znajduje zmienną urlpatterns. 3. Iteruje wartości zmiennej urlpatterns w celu przypasowania wysłanego w zapytaniu adresu URL do znajdujących się tam wyrażeń regularnych 4. Jeżeli framework przypasował odpowiedni wzorzec do zapytania to wykonuje widok przypisany do danego wzorca. 5. Jeżeli framework nie przypasował odpowiedniego wzorca do zapytania to zwraca użytkownikowi odpowiedni błąd. 3.2 Definiowanie adresów URL Poprzez definiowanie adresów URL tworzona jest mapa naszego serwisu. Adresy URL powinny być możliwie jak najmniej skomplikowane, ich nazwy powinny w jakiś sposób odnosić się do strony na której znajduje się użytkownik, a także być przyjazne SEO. 21
23 W powyższym przykładzie zdefiniowane są adresy URL dla aplikacji main_page. Zaczynając od zaimportowania odpowiednich widoków, następnie dla każdego adresu należy wprowadzić wartość do listy urlpatterns. Schemat definiowania pojedynczego adresu wygląda następująco: url ( r ' wyra ż enie_regularne ', widok, name =' nazwa ') Jeżeli jest to standardowy urls.py tworzony wraz z powstawaniem projektu, to: url ( r '^ $ ', views. home, name =' home ') przypasowany będzie do URL domena.com/. Ostatni rekord pokazuje nam możliwość definiowania dynamicznego adresu URL, w tym przypadku należy pobierać dowolny ciąg znaków w danym miejscu i do widoku przekazać go przypisanego do zmiennej key. 3.3 Przekierowywanie URL do aplikacji Przy większej ilości aplikacji, a co za tym idzie - widoków, dobrym rozwiązaniem jest przekierowywanie adresów URL do poszczególnych aplikacji. Unikniemy tym samym bardzo dużej ilości kodu w jednym pliku. Aby tego dokonać należy utworzyć odpowiednie pliki urls.py w aplikacjach, a następnie ja zaimportować do głównego pliku urls.py znajdującego się w katalogu głównym projektu. 22
24 4. Widoki Funkcja widoku (w skrócie widok) jest normalną funkcją języka python, przyjmującą bardzo ważny dla działania framework a argument - request, a zwracana odpowiedź trafia do użytkownika, który w swojej przeglądarce wszedł na odpowiedni adres URL wyzwalający ten widok. Argument request przekazuje nam wszystkie informacje jakie zostały wysłane wraz z zapytaniem. Na przykład można sprawdzić czy zapytanie wysłał zalogowany użytkownik, a jeśli tak to dodatkowo można odczytać konkretnie jaki. Odpowiedzią może być dosłownie wszystko, co może zwrócić funkcja języka python - strona HTML, przeniesienie na inną stronę, błąd, dokument XML, czy też obrazek itd. Widok powinien zawierać kod służący wygenerowania pożądanej przez nas odpowiedzi. Widoki należy zdefiniować w pliku views.py w katalogu danej aplikacji. 4.1 Definiowanie widoków Widoki to tak naprawdę w zależności od typu klasy, lub funkcje języka python przyjmujące jako argument wartość zapytania użytkownika i ewentualnie zmienne pobrane z URL. Wymagane w nich jest zdefiniowanie odpowiedzi HTTP. Powyżej zobaczyć można widok odpowiadający za aktywowanie konta użytkownika, po wejściu w link aktywacyjny czyli adres URL naszego projektu z odpowiednim kluczem wysłanym podczas rejestracji. Prócz atrybutu zapytania, przyjmuje drugi argument - jest to klucz podany w adresie URL. Należy zacząć od sprawdzenia czy użytkownik nie jest już czasem zalogowany - zalogowany użytkownik musi być aktywny więc widok ten w odpowiedzi przekieruje go na stronę główną. 23
25 Jeżeli użytkownik nie jest zalogowany należy pobrać profil użytkownika, z danym kluczem aktywacyjnym. W przypadku gdy nie ma takiego profilu zwracana jest użytkownikowi strona HTML pod nazwą 404.html - która to wyświetli błąd użytkownikowi. Jak profil z takim kluczem istnieje, trzeba pobrać dane o modelu użytkownika wbudowanego w framework i raz jeszcze sprawdzić - tym razem czy jest aktywny. W zależności od wyniku testu aktywować użytkownika i zwrócić HTML z komunikatem sukcesu, bądź przekierunkować użytkownika na stronę główną projektu. 4.2 Dekoratory Dekoratory pozwalają na korzystanie z różnych właściwości zapytania HTTP. W powyższym przykładzie dla widoku profile używane są dwa dekoratory. Pierwszy jest dekoratorem framework a. Zastrzega widok tylko dla zalogowanych użytkowników, w przypadku próby dostępu do widoku przez niezalogowanego użytkownika przekieruje go do URL mechanizmu logowania. Drugi jest dekoratorem sprawdzającym, czy użytkownik przeszedł autentykację z systemem USOS: Ten dekorator działa podobnie jak ten pierwszy - z tą różnicą, że test zdefiniować możemy sami. Inne dekoratory jakich możemy użyć to na przykład: require_http_methods - Widok zastrzeżony wyłącznie dla podanych jako argumenty dekoratora metod HTTP gzip_page - Pozwala na skompresowanie treści vary_on_headers/vary_on_cookie - Pozwala na controle cache owania 4.3 Widoki na bazie klas Widoki na bazie klas można użyć dzięki imporcie odpowiednich widoków generycznych. 24
26 W powyższym przykładzie należy importować generyczny widok TemplateView służący wyświetlaniu odpowiedniego szablonu w odpowiedzi. Wystarczy tylko zdefiniować zmienną template_view i przypisać jej wartość - czyli nazwę pożądanego szablonu. 25
27 5.Formularze 5.1 Standardowe formularze HTML Framework Django pozwala na swobodną i bezkonfliktową wymianę danych między serwerem a systemem za pomocą formularzy HTML. Oczywiście formularz taki musi być zdefiniowany prawidłowo, czyli: Być umieszczony między tagami <form>, a </form> Określać metodą jaką dane będą przesyłane Przesyłane dane muszą być prawidłowo obsługiwane przez odpowiedni widok W zależności od konkretnej strony zarządzanie formularzami jest łatwym, bądź trudnym zadaniem. Zależy to głównie od ilości formularzy na danej podstronie, a także ilości danych i ich typ. Konieczne jest wtedy: 1. Przygotowanie i zdefiniowanie takich formularzy, 2. Wyświetlenie ich na stronie, 3. Umożliwienie wprowadzania konkretnych danych użytkownikom, 4. Wysłanie ich na serwer, 5. Walidacja otrzymanych danych, 6. Podjęcie odpowiednich czynności w zależności od danych, 7. Wyczyszczenie formularzy, 8. Zwrócenie użytkownikowi stosownego komunikatu. 5.2 Formularze Django Mimo że framework Django dobrze współpracuje ze standardowymi formularzami HTML - posiada on własny mechanizm generujący takie formularze, co niesie z sobą wiele korzyści. Dzięki funkcjonalności mechanizmu formularzy Django proces tworzenia i obsługiwania formularzy jest zautomatyzowany i uproszczony, co więcej przesyłane dane są lepiej zabezpieczone. Formularze te obejmują trzy główne części tworzenia i stosowania standardowych formularzy: 1. Przygotowanie odpowiednich danych do konwersji 2. Konwersja danych do formy gotowej do wyświetlenia użytkownikowi jako HTML 3. Przyjmowanie i przetwarzanie danych otrzymanych z formularza użytkownika Rdzeniem całego tego mechanizmu jest klasa Form. 26
28 Podobnie jak model opisuje strukturę logiczną obiektu, jego metody, oraz reprezentacje. Również w podobny sposób jak pola modelu konwertują dane do bazy danych, tak pola formularzy Django konwertują dane do HTML. Pola formularzy są klasami samymi w sobie. Generują dane potrzebne do stworzenia formularza i przeprowadzają ich walidację po zatwierdzeniu formularza przez użytkownika. Podczas przetwarzania obiektu w Django, działa to na zasadzie: 1. Pozyskanie danych o obiekcie 2. Przekazanie go do szablonu HTML 3. Jego konwertacja do kodu HTML za pomocą zmiennej szablonowej Przetwarzanie formularza w szablonie odbywa się w bardzo podobny sposób z drobną różnicą - zwykle niepożądanym działaniem jest wyświetlanie pustego obiektu w szablonie. Inaczej ma się to w przypadku formularzy gdzie chcemy wyświetlić pusty formularz, aby umożliwić użytkownikowi jego wypełnienie i jest to w pełni pożądane działanie. 5.3 Tworzenie formularza Django Formularze można zdefiniować w pliku views.py w katalogu aplikacji do której będzie on przeznaczony. Tworzenie formularzy należy zacząć od ich zaimportowania. Następnie należy utworzyć osobną klasę dla każdego formularza jakiego chcemy stworzyć, a w atrybucie klasy podać typ formularza, powyższy przykład przedstawia standardowe formularze Django, stąd używamy forms.form aby użyć klasy Form. Do każdego formularza trzeba przypisać jego pola, które konwertowane będą na <input> w HTML. 27
29 Pola należy zdefiniować podobnie jak w modelach przypisując do zmiennych odpowiednie pola importowane z mechanizmu forms django, a są to na przykład: CharField - pole na niewielki tekst, TextField - pole na większy tekst, BooleanField - pole przyjmujące tylko wartości Prawda/Fałsz, ChoiceField - pole przyjmujące tylko wartości zdefiniowane w atrybucie pola, DateField - pole na datę, DateTimeFIeld - pole na datę szczegółową (zawierać może nawet setne sekund), FileField - pole na plik, Field - pole na adres , IntegerField - pole na liczbę całkowitą, FloatField - pole na liczbę rzeczywistą, Pola mogą przyjmować atrybuty. Niektóre atrybuty są ogólne jak widget użyty powyżej do określania prezentowania pola (w tym przypadku PasswordInput() sprawia, że wpisywany tekst nie będzie widoczny, jest to metoda stosowana dla celów poprawy bezpieczeństwa aby żadna osoba trzecia nie widziała co jest tam wprowadzane). Niektóre atrybuty są desygnowane wyłącznie dla wąskiej grupy pól, a nawet wymagane przez nie jak max_length dla pola typu CharField określający maksymalną długość łańcucha tekstowego. 5.4 Użycie formularza w widoku Aby użyć wcześniej zdefiniowany formularz należy wczytać go i do widoku. Widok zawierający formularz musi zwrócić użytkownikowi szablon. Wraz z szablonem formularz ten powinien przekazany być do zmiennej i do niego przekazany. W tym samym widoku można choć nie jest to wymogiem - zdefiniować logikę przetwarzającą dane zwrócone przez użytkownika za pomocą tego formularza. 28
30 Aby użyć formularza w widoku trzeba najpierw go zaimportować. Następnie należy przypisać go do reprezentującej go zmiennej i przekazać do szablonu. Powyższe akcje wystarczą do wygenerowania formularza jednak nie do walidacji i przetwarzania danych. Aby widok był w stanie przetwarzać dane z formularza trzeba ustawić aby przy każdym wywołaniu sprawdzał czy wraz z żądaniem nie przyszła metoda POST, lub GET. Jeżeli w zapytaniu będą przekazywane dane jedną z tych metod, należy przypisać je do odpowiedniego formularza, bądź kilku formularzy. Powyższy przykład widoku, sprawdza czy zapytanie nie zawiera danych przekazywanych metodą POST - jeżeli nie wyświetli pusty formularz, jeżeli tak dokona walidacji tych danych i sprawdzi w tym przypadku czy dane do logowania są poprawne. Jeżeli walidacja danych przebiegnie poprawnie i będą one prawidłowe, framework dokona autentykacji użytkownika i przekieruje go na stronę główną - jeżeli nie zwróci stosowany komunikat błędem. 5.5 Użycie formularza w szablonie Przekazany przez widok należy wyświetlić w szablonie zwracanym przez ten sam widok. Formularz można wyświetlić na kilka sposobów, nie jest określone, który jest najlepszy dlatego warto dostosować się do konkretnej sytuacji. 29
31 Powyższy przykład demonstruje użycie formularza Django (przekazanego pod zmienną loginform z poprzedniego przykładu) w szablonie. Należy pamiętać, że formularz Django nie generuje tagu <form> i zamykającego go </form>, oraz przycisku typu submit zatwierdzającego formularz - należy je więc dodać samemu. Formularz możemy wyświetlić jako całość umieszczając jego nazwy w podwójnych klamrach, bądź też każde pole osobno dodając do nazwy odwołanie do tego pola również w podwójnych klamrach. W powyższym przykładzie dodatkowo do wyświetlania form użyte zostały metody przypisywania im tekstu pomocniczego i klasy CSS. Można to uczynić tak jak tutaj w szablonie bądź też w atrybucie przy definiowaniu form. Dla użytkownika wynikiem umieszczenia naszych pól będzie odpowiednio wygenerowany kod HTML. Pole dla adresu będzie wyglądać następująco: Dzięki dodaniu metod definiujących teksty pomocnicze i klasy, możliwa jest spójna integracja z interfejsem graficznym: 30
32 5.6 Formularze na bazie Modeli Jeżeli celem formularza jest zapisanie danych do bazy danych warto zamiast standardowego formularza Django użyć ModelForm, który desygnowany jest do formularzy reprezentujących cały, bądź część modelu. Powyższy przykład pokazuje ten sam formularz co wcześniej z tą różnicą, że stworzony został na bazie modelu User. 31
33 Obie metody są poprawne, jednak mając możliwość lepszym rozwiązaniem jest użycie ModelForm, gdyż bardzo skraca on kod i ułatwia zapis do bazy. Problem pojawić się może jednak przy rozszerzaniu formularza o elementy spoza modelu. Jest to możliwe stopień zaawansowania tej operacji odbiera największą zaletę użycia ModelForm jaką jest czas i mała ilość kodu. Dodatkowo przy zapisie mogą pojawić się nieprawidłowości. 32
34 6. Szablony 6.1 Zmienne Zmienne w szablonach pozwalają na wyświetlenie danych przekazanych przez widok. Aby użyć zmiennych w szablonie warunkiem koniecznym jest ich zdefiniowanie w widoku i przekazanie do szablonu. Prócz ich wyświetlania można określać warunki ich wyświetlania, oraz styl w jakim zostaną wyświetlone. Dzięki tym operacją tworzą spójną całość w kodzie HTML. Zmienne do szablonów są przekazywane przez widoki wyświetlające dany szablon. Zmienną umieścić można w szablonie umieszczając ją w podwójnych klamrach. Oprócz wyświetlenia wartości lub reprezentacji zmiennej można się na przykład przy obiektach odwołać do ich atrybutów, w ten sam sposób co normalne odwoływanie w języku python czyli po kropce. Do zmiennych można dodać filtry dodając i nazwę filtry oraz jego wartość jeżeli takowy wymaga. W powyższym przykładzie użyty został zdefiniowany osobno filter dodający klasę CSS do zmiennej, jednak framework Django posiada też własne filtry jak na przykład: Default - Jego wartość będzie wyświetlana w przypadku braku zmiennej, Length - Zwraca długość wartości zmiennej, Filesizeformat - Zwraca rozmiar pliku 33
35 Oto efekt powyższego kodu widoczny dla użytkownika. Widok przekazał informacji do szablonu o imieniu i nazwisku użytkownika, jego kierunku i zdjęciu profilowym, a szablon odpowiednio to wyświetlił. 6.2 Tagi Tagi pozwalają na użycie warunków wyświetlania danych w szablonie. Tagi w szablonie umieszcza się podobnie jak zmienne, z tą różnicą, że wewnętrzny cudzysłów zamienić należy na znak procentu. Tagi pozwalają przeprowadzać operacje logiczne w szablonie. W powyższym przykładzie zostało zaprezentowane użycie tagów for i if - które działają i mają składnie identyczną do ich odpowiedników w języku programowania python, z tą różnicą, że wymagają tagów zamykających mówiących o tym gdzie kończy się ich działanie odpowiednio endfor i endif (szablon w przeciwieństwie do python a nie jest wrażliwy na intendacje). 34
36 7. Panel Administracyjny Panel Administracyjny tworzony jest wraz z powstawaniem projektu i zapewnia bardzo szybkie i wygodne zarządzanie danymi z bazy danych na podstawie modeli. Aby uzyskać dostęp do panelu admina należy udać się na adres strony projektu i dodać do URL głównego /admin. Potrzebna jest weryfikacja, którą przejść można tylko podając odpowiednie dane do logowania na użytkownika z uprawnieniami administratora. Stworzyć takiego użytkownika można za pomocą pliku manage.py: python manage.py createsuperuser 35
37 Początkowo tylko wbudowane modele framework a Django będą dostępne w panelu administracyjnym. By uzyskać dostęp do zdefiniowanych w aplikacjach modeli należy je zarejestrować w pliku admin.py w odpowiednim katalogu aplikacji: Rejestracje w pliku admin.py można dokonać za pomocą zaimportowania mechanizmu admin, następnie użycia metody register z modelem, który należy zarejestrować jako atrybut. 36
38 8. Django Rest Framework Django REST framework jest aplikacją napisaną dla framework a Django przeznaczoną do tworzenia aplikacji typu REST ( Representational State Transfer zmiana stanu poprzez reprezentacje, w skrócie REST). Głównymi zaletami używania tego typu aplikacji są: Interfejs umożliwiający swobodne przeglądanie naszych zasobów, Wiele metod autentykacji takich jak na przykład Auth1a czy OAuth2, Serializacja wspierająca zarówno ORM jak i pozostałe źródła danych, Duża swoboda w pisaniu kodu - można tworzyć aplikacje za pomocą zwykłych funkcji języka python, Duża popularność. 8.1 Serializacja Serializacja pozwala na konwersje danych do typów języka python, które następnie łatwo przedstawić w formacie JSON,XML i im podobnych. Serializacja pozwala także na deserializacje - czyli na przykład dane pozyskane w formacie JSON przedstawić za pomocą języka python co pozwala na ich łatwe przetwarzanie czy też zapis do bazy danych. Budowa serializatorów w Django bardzo przypomina formularze czy też modele. 37
39 Powyższy przykład pokazuje budowę serializatorów opartych na podstawie modeli. Potrzebny do tego będzie import modeli, których chcemy użyć i mechanizm serializacji z Django Rest Framework. Serializator jest klasą, która jako argument przyjmuje odpowiednią metodę serializacji w zależności od jego typu. ( w tym przypadku dla modeli należy użyć ModelSerializer) W podklasie Meta należy zdefiniować model którego chcemy użyć i jego pola (pola można zdefiniować kolejno umieszczając ich nazwy w tupli, bądź tak jak w przykładzie użyć selektora all by użyć wszystkich pól. Dodatkowo do serializacji można dodać własne pola i zdefiniować sposób pozyskiwania ich wartości - w przykładzie tym użyto innych serializatorów na podstawie modeli i użyto zagnieżdżenia by stworzyć kompleksowe REST Api z pełnymi informacjami na temat danego użytkownika. 8.2 Widoki na bazie serializatora Po zdefiniowaniu sposobu serializacji danych do stworzenia REST API potrzebne jest jeszcze zdefiniowanie odpowiedniego widoku. Widok ten musi pobrać odpowiednie dane i wskazać odpowiedni serializator. Dodatkowo może określać inne właściwości jak paginacja czy filtrowanie. Aby stworzyć widok na bazie serializatora potrzebne będą: Odpowiedni mechanizm dopasowany do typu serializatora - viewsets.modelviewset, 38
40 Modele na podstawie których stworzymy QuerySet i dzięki ORM będą przekazane dane do serializatora - User i UserProfile, Odpowiedni serializator - UserSerializer i UsersSerializer Widok ten stworzony będzie na bazie klasy przyjmującej jako atrybut odpowiedni mechanizm dopasowany do typu serializatora. Jako argumenty wymagane należy zdefiniować klasę odpowiedniego serializatora, oraz queryset na podstawie którego dane będą pobrane z bazy danych. Dodatkowo w powyższym przykładzie dla klasy UsersViewSet dodano: lookup_field - pole po którym będzie można uzyskać dostęp do obiektu, filter_backends - mechanizm filtrujący, filter_fields - pola które będą filtrowane W klasie UserViewSet natomiast zostały nadpisane metody pozyskiwania obiektów, tak aby zwracała ona przekonwertowane dane tylko o zalogowanym użytkowniku zamiast wszystkich. 8.3 Tworzenie URL dla REST Api Mając zdefiniowany widok dla REST API, pozostaje do niego przypisać odpowiedni adres URL. Dobrą metodą jest stosowanie nazw powiązanych z wyświetlanymi danymi, bowiem mając bardzo dużą liczbę tego typu aplikacji można łatwo się pogubić. Aby stworzyć URL dla REST Api utworzonych przez Django Rest Framework należy skorzystać z routers. Do tego będzie potrzebny dodatkowo mechanizm url i include z Django i odpowiednie widoki. Trzeba stworzyć router i rejestrować w nim te restowe API do których chcemy przypisać adres podając końcową część URL i wskazując na odpowiedni widok. 39
41 Następnie należy umieścić router w standardowym URL Django. 8.4 Interfejs Interfejs jest narzędziem pomocniczym dla programisty, bowiem umożliwia łatwy i czytelny przegląd danych. Dodatkowo pozwala przetestować działanie aplikacji za pomocą formularzy. Po stworzeniu URL do danego REST Api uzyskany został dostęp do interfejsu. Interfejs stworzony jest dla deweloperów, a jego głównym celem jest łatwy i przejrzysty podgląd. 40
42 Także umożliwia szybkie używanie metod HTTP w celu testowania poprawności działania. URL REST Api daje nam dostęp do listy wyników otrzymanych przez nasz QuerySet i serializator. Dodając do niego wartość pola identyfikacyjnego uzyskać możemy pojedynczy obiekt, także można użyć filtrowania czy też otrzymania prostego wyniku zamiast interfejsu. Chcąc dla przykładu otrzymać wynik zapytania w formacie json należy dodać:? format = json 41
43 9. Integracje 9.1 USOS Integracja z systemem USOS w projekcie ElStudent przeprowadzona została przy użyciu USOS Api. Do nawiązania połączenia użyto natomiast aplikacji języka python - rauth, która zawiera w sobie metody łączenia przez Oauth. Do połączenia potrzebne było wygenerowanie w systemie USOS klucza prywatnego i publicznego. Od użytkownika wymagane jest natomiast wyrażenie zgody na pobranie informacji i wpisanie jednorazowego tokena generowanego przez system USOS. Po nawiązaniu połączenia można pobrać dane następującą metodą: 42
44 Metoda ta jako argument pobiera adres odpowiedniego serwisu z USOS Api i na jego podstawie pobiera dane. Portal ElStudent pobiera przy autentykacji użytkownika z USOS: services/users/user - zwracający dane o użytkowniku, na jego podstawie przypisuje użytkownikowi jego Imię i Nazwisko, kierunek studiów, oraz sprawdza czy jest aktywnym studentem, services/courses/user - zwracający dane o zajęciach na które użytkownik jest zapisany w aktualnym semestrze, aby go do nich zapisać 9.2 Facebook Integracja z portalem Facebook ma na celu umożliwienie użytkownikowi stworzenie konta poprzez uwierzytelnienie w portalu Facebook zamiast standardowego formularza rejestracyjnego. 43
45 Na portalu Facebook trzeba stworzyć własną aplikację korzystając z strony dla deweloperów. Aby zintegrować aplikację z portalem ElStudent skorzystano z aplikacji dla frameworka Django - django-allauth mający zdefiniowany mechanizm uwierzytelniania i autentykacji dla wielu popularnych serwisów. Następnie wpisano odpowiednie klucze w ustawieniu aplikacji i umieszczono funkcję rejestracji/logowania przez portal Facebook: 9.3 SMTP Portal ElStudent wysyła do swoich użytkowników maile: Przy rejestracji - mail zawierający link aktywacyjny, Przy kontakcie - użytkownik po wypełnieniu formularza drogą mail ową może skontaktować się z administratorami Dane do połączenia z SMTP znajdują się w pliku settings.py 44
46 Podany wyżej przykład przedstawia część widoku odpowiedzialną za wysłanie maila z linkiem aktywacyjnym. Kolejno wczytuje on szablon dla wiadomości , umieszcza w nim klucz aktywacyjny dla użytkownika, definiuje temat wiadomości, wysyłającego i odbiorców, a następnie wysyła wiadomość. 45
47 Podsumowanie Umiejętne wykorzystanie framework a Django pozwala na zbudowanie zaawansowanej aplikacji internetowej w bardzo krótkim jak na to zadanie czasie. Zleceniodawcom takich serwisów bardzo często zależy na jak najszybszym wykonaniu zadania, gdzie Django ma zdecydowaną przewagę. To właśnie dzięki temu zdobywa swoją popularność. Choć wciąż ustępuje najbardziej popularnym rozwiązaniom jak Java czy.net, to grono jego zwolenników nieustannie się powiększa. Zauważyć można bardzo licznie tworzone społeczności entuzjastów framework a gdzie ludzie dzielą się swoim doświadczeniem, a także liczne powstawanie aplikacji stworzonych przez użytkowników. Potwierdzeniem powyższych słów może być użycie Django w największych i najpopularniejszych stronach internetowych, a także portal ElStudent. Projekt ElStudent mimo krótkiego czasu powstawania jest bardzo rozbudowanym portalem społecznościowym dla studentów. Obecnie korzystają z niego studenci uniwersytetu Adama Mickiewicza w Poznaniu, a planowana jest jego ekspansja na inne polskie uczelnie posiadające system USOS. 46
48 Bibliografia [1] docs.djangoproject.com - oficjalna strona framework a Django [2] - oficjalna strona języka programowania python [3] - oficjalna strona Django Rest Framework [4] The Definitive Guide to Django: Web Development Done Right (wydawnictwo Apress, ) - Adrian Holovaty, Jacob K. Moss [5] Learning Website Development with Django (wydawnictwo Packt Publishing ) - Ayman Hourieh [6] Python i Django Programowanie Aplikacji Webowych (wydawnictwo Helion ) - Jeff Forcier, Paul Bissex, Wesley Chun 47
Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki
Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Uwierzytelnianie użytkowników, Obiekt session, Silniki
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoDjango : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści
Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop. 2016 Spis treści O autorze 13 O recenzentach technicznych 14 Wprowadzenie 17 Rozdział 1. Utworzenie aplikacji bloga 21 Instalacja
Bardziej szczegółowoLaboratorium 7 Blog: dodawanie i edycja wpisów
Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą
Bardziej szczegółowoZrąb webowy dla perfekcjonistów z terminami. autor: Kamil Adamczyk
Zrąb webowy dla perfekcjonistów z terminami autor: Kamil Adamczyk 1 Django napisany w Pythonie DRY czyli zasada nie powtarzaj się w odniesieniu do tworzenia aplikacji opensource'owy zrąb służący do tworzenia
Bardziej szczegółowoREFERAT O PRACY DYPLOMOWEJ
REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i budowa systemu zarządzania treścią opartego na własnej bibliotece MVC Autor: Kamil Kowalski W dzisiejszych czasach posiadanie strony internetowej to norma,
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,
Bardziej szczegółowoWikispaces materiały szkoleniowe
Wikispaces materiały szkoleniowe Wstęp Wikispaces jest ogólnie dostępnym narzędziem do tworzenia własnych stron internetowych. Zastosowanie stron internetowych tworzonych przy pomocy wikispaces to na przykład:
Bardziej szczegółowoModele danych walidacja widoki zorientowane na model
Modele danych walidacja widoki zorientowane na model 1. Wprowadzenie Modele danych Modele danych w ASP.NET MVC to klasy znajdujące się w katalogu Models. Ich zadaniem jest mapowanie danych przesyłanych
Bardziej szczegółowoSesje i logowanie. 1. Wprowadzenie
Sesje i logowanie 1. Wprowadzenie Żądania od nawet tego samego użytkownika na serwerze nie są domyślnie w żaden sposób łączone ze sobą. Każde jest w pewnym sensie nowe i serwer nie jest w stanie stwierdzić,
Bardziej szczegółowoPlatforma e-learningowa
Dotyczy projektu nr WND-RPPD.04.01.00-20-002/11 pn. Wdrażanie elektronicznych usług dla ludności województwa podlaskiego część II, administracja samorządowa realizowanego w ramach Decyzji nr UDA- RPPD.04.01.00-20-002/11-00
Bardziej szczegółowoLaboratorium Kierunki Rozwoju oprogramowania REST, Django
Laboratorium Kierunki Rozwoju oprogramowania REST, Django 1. Instalacja oprogramowania: sudo apt-add-repository universe && sudo apt-get upgrade sudo apt-get install python-pip -y sudo pip2 install django==1.9.2
Bardziej szczegółowoBaza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne
Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z możliwości utworzenia struktury bazy danych z
Bardziej szczegółowoPlan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym
1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle
Bardziej szczegółowoOMNITRACKER Wersja testowa. Szybki przewodnik instalacji
OMNITRACKER Wersja testowa Szybki przewodnik instalacji 1 Krok 1:Rejestracja pobrania (jeżeli nie wykonana dotychczas) Proszę dokonać rejestracji na stronieomninet (www.omnitracker.com) pod Contact. Po
Bardziej szczegółowoBaza danych sql. 1. Wprowadzenie
Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z edytora graficznego struktury bazy danych, który
Bardziej szczegółowoPHP: bazy danych, SQL, AJAX i JSON
1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji
Bardziej szczegółowoInstalacja systemu zarządzania treścią (CMS): Joomla
Instalacja systemu zarządzania treścią (CMS): Joomla Na stronie http://www.cba.pl/ zarejestruj nowe konto klikając na przycisk:, następnie wybierz nazwę domeny (Rys. 1a) oraz wypełnij obowiązkowe pola
Bardziej szczegółowoTemat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
Bardziej szczegółowoAplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework
Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework mgr inż. Łukasz Stefanowicz dr inż.
Bardziej szczegółowoFull Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia
Kod szkolenia: Tytuł szkolenia: DED/FSJS Full Stack JavaScript z Angular i Nest Dni: 5 Opis: Adresaci szkolenia Kurs przeznaczony jest dla programistów posiadających podstawową wiedzę w zakresie JavaScript,
Bardziej szczegółowoOMNITRACKER Wersja testowa. Szybki przewodnik instalacji
OMNITRACKER Wersja testowa Szybki przewodnik instalacji 1 Krok 1:Rejestracja pobrania (jeżeli nie wykonana dotychczas) Proszę dokonać rejestracji na stronieomninet (www.omnitracker.com) pod Contact. Po
Bardziej szczegółowoModele. Najcz. Metoda unicode definiuje sposób wyświetlania obiektu w postaci tekstowej. BooleanField - pole logiczne, True/False
Ściaga z Django Modele 1 from django.db import models from django.contrib.auth.models import User 4 class Story(models.Model): 5 title = models.charfield(max_length=100, null=false, blank=false) 6 description
Bardziej szczegółowoI. Informacje ogólne. Jednym z takich systemów jest Mambo.
MAMBO (CMS) I. Informacje ogólne CMS, Content Management System ("system zarządzania treścią") jest to jedna lub zestaw aplikacji internetowych pozwalających na łatwe utworzenie oraz późniejszą aktualizację
Bardziej szczegółowoGenerowanie kluczy API
Generowanie kluczy API Spis treści BitBay... 2 Abucoins... 5 BitMarket... 7 Bitfinex... 10 Poloniex... 15 rozliczkryptowaluty.pl Instrukcja generowania kluczy API na giełdach kryptowalut Strona 1 / 17
Bardziej szczegółowoPrzewodnik... Tworzenie Landing Page
Przewodnik... Tworzenie Landing Page Spis treści Kreator strony landing page Stwórz stronę Zarządzaj stronami 2 Kreator strony landing page Kreator pozwala stworzyć własną stronę internetową z unikalnym
Bardziej szczegółowoZ pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień:
Zasady grupy (GPO) Windows Server 2008 R2 Zasady grupy to potężne narzędzie udostępnione administratorom systemów Windows w celu łatwiejszego zarządzania ustawieniami stacji roboczych. Wyobraźmy sobie
Bardziej szczegółowoWidoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych
Widoki zagnieżdżone, layout 1. Wprowadzenie Repozytoria danych Identyczne operacje na danych często się powtarzają np. pobierz książkę. Jeśli zapytanie realizowane jest za każdym razem w metodzie kontrolera
Bardziej szczegółowoREFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką Autor: Paweł Konieczny Promotor: dr Jadwigi Bakonyi Kategorie: aplikacja www Słowa kluczowe: Serwis
Bardziej szczegółowoI. Interfejs użytkownika.
Ćwiczenia z użytkowania systemu MFG/PRO 1 I. Interfejs użytkownika. MFG/PRO w wersji eb2 umożliwia wybór użytkownikowi jednego z trzech dostępnych interfejsów graficznych: a) tekstowego (wybór z menu:
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Bardziej szczegółowoPrzewodnik Szybki start
Przewodnik Szybki start Program Microsoft Access 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zmienianie rozmiaru ekranu lub
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 8 PHP, czyli poczatki nowej, dynamicznej znajomosci Na dzisiejszych zajęciach rozpoczniemy programowanie po stronie serwera w języku PHP. Po otrzymaniu żądania serwer
Bardziej szczegółowoUstalanie dostępu do plików - Windows XP Home/Professional
Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje
Bardziej szczegółowoKurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE
Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE Cena szkolenia Cena szkolenia wynosi 100 zł za 60 min. Ilość godzin szkolenia jest zależna od postępów w nauce uczestnika kursu oraz ilości czasu, którą będzie
Bardziej szczegółowoProgramowanie Komponentowe WebAPI
Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,
Bardziej szczegółowoCMS Admin instrukcja administratora
CMS Admin instrukcja administratora system zarządzania treścią CMS Made Simple http://www.cmsmadesimple.org/ 1 Strona bazowa konferencji: http://bcc.impan.pl/test/ Link do panelu administracyjnego: http://bcc.impan.pl/test/
Bardziej szczegółowoProdukcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja
Produkcja by CTI Proces instalacji, ważne informacje oraz konfiguracja Spis treści 1. Ważne informacje przed instalacją...3 2. Instalacja programu...4 3. Nawiązanie połączenia z serwerem SQL oraz z programem
Bardziej szczegółowoInstrukcja laboratoryjna
Zaawansowane techniki obiektowe 2016/17 Instrukcja laboratoryjna Testy funkcjonalne Prowadzący: Tomasz Goluch Wersja: 1.0 Testowanie aplikacji z bazą danych Większość współczesnych aplikacji korzysta z
Bardziej szczegółowoGrzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat
Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych
Bardziej szczegółowoPlatforma e-learningowa
Dotyczy projektu nr WND-RPPD.04.01.00-20-002/11 pn. Wdrażanie elektronicznych usług dla ludności województwa podlaskiego część II, administracja samorządowa realizowanego w ramach Decyzji nr UDA- RPPD.04.01.00-20-002/11-00
Bardziej szczegółowoLaboratorium Technologii Informacyjnych. Projektowanie Baz Danych
Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w
Bardziej szczegółowoJak ustawić cele kampanii?
Jak ustawić cele kampanii? Czym są cele? Jest to funkcjonalność pozwalająca w łatwy sposób śledzić konwersje wygenerowane na Twojej stronie www poprzez wiadomości email wysłane z systemu GetResponse. Mierzenie
Bardziej szczegółowoPlan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza
4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza
Bardziej szczegółowoDokumentacja systemu NTP rekrut. Autor: Sławomir Miller
Dokumentacja systemu NTP rekrut Autor: Sławomir Miller 1 Spis treści: 1. Wstęp 1.1 Wprowadzenie 1.2 Zakres dokumentu 2. Instalacja 2.1 Wymagania systemowe 2.2 Początek 2.3 Prawa dostępu 2.4 Etapy instalacji
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 14 AJAX, czyli jak odświeżyć bez odświeżania, część trzecia Na dzisiejszych zajęciach będziemy kontynuować realizację serwisu do wymiany wiadomości z wykorzystaniem technologii
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości
Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy
Bardziej szczegółowoPortal SRG BFG. Instrukcja korzystania z Portalu SRG BFG
Portal SRG BFG Instrukcja korzystania z Portalu SRG BFG Opracowano w Departamencie Informatyki i Administracji Bankowego Funduszu Gwarancyjnego Październik 2013 Spis treści: 1. Dostęp do strony portalu...
Bardziej szczegółowoDokumentacja panelu Klienta
Dokumentacja panelu Klienta Wersja 1.1 Strona 1 z 17 Spis treści Historia zmian... 3 Logowanie do Panelu Klienta... 4 Panel... 5 Wysyłki... 6 Przyłączenia... 7 Ustawienia... 8 Zasoby... 8 Integracje...
Bardziej szczegółowo16) Wprowadzenie do raportowania Rave
16) Wprowadzenie do raportowania Rave Tematyka rozdziału: Przegląd wszystkich komponentów Rave Tworzenie nowego raportu przy użyciu formatki w środowisku Delphi Aktywacja środowiska Report Authoring Visual
Bardziej szczegółowoDokumentacja panelu Klienta
Dokumentacja panelu Klienta Wersja 1.2 Strona 1 z 25 Spis treści Historia zmian... 3 Logowanie do panelu Klienta... 4 Panel... 5 Wysyłki... 6 Przyłączenia... 7 Ustawienia... 8 Zasoby... 8 Integracje...
Bardziej szczegółowoPortal SRG BFG Instrukcja korzystania z Portalu SRG BFG
Portal SRG BFG Instrukcja korzystania z Portalu SRG BFG Opracowano w Departamencie Informatyki Bankowego Funduszu Gwarancyjnego Październik 2016 Spis treści: 1. Dostęp do strony Portalu... 3 1.1. Adres
Bardziej szczegółowoINSTRUKCJA UŻYTKOWNIKA GENERATORA WNIOSKÓW O DOFINANSOWANIE DLA WNIOSKODAWCÓW
INSTRUKCJA UŻYTKOWNIKA GENERATORA WNIOSKÓW O DOFINANSOWANIE DLA WNIOSKODAWCÓW Historia zmian dokumentu Nr wersji Data wersji Komentarz/Uwagi/Zakres zmian 1.0 2015-11-19 Utworzenie dokumentu 1 Spis treści
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5
Wdrożenie modułu płatności eservice dla systemu Zen Cart 1.3.9 1.5 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Bardziej szczegółowoCzęść 3 - Konfiguracja
Spis treści Część 3 - Konfiguracja... 3 Konfiguracja kont użytkowników... 4 Konfiguracja pól dodatkowych... 5 Konfiguracja kont email... 6 Konfiguracja szablonów dokumentów... 8 Konfiguracja czynności
Bardziej szczegółowoIntegracja systemu trigocms! z platformą Facebook
Integracja systemu trigocms! z platformą Facebook 1. Wstęp trigocms! daje Ci możliwość integracji z platformą Facebook, dzięki czemu możesz publikować artykuły jednocześnie na swojej stronie internetowej
Bardziej szczegółowoAutor: Joanna Karwowska
Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.
Bardziej szczegółowoBudowa aplikacji ASP.NET z wykorzystaniem wzorca MVC
Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x
Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Bardziej szczegółowo1. REJESTRACJA W INTERIM24.PL... 2 2. PANEL UŻYTKOWNIKA ZAWARTOŚĆ... 8 3. UZUPEŁNIENIE PROFILU... 9
Strona1 Platforma Interim24.pl została stworzona w ramach projektu Interim management nowość w zarządzaniu wiekiem i firmą współfinansowanego przez Unię Europejską w ramach Europejski Funduszu Społecznego.
Bardziej szczegółowoPodręcznik Użytkownika LSI WRPO
Podręcznik użytkownika Lokalnego Systemu Informatycznego do obsługi Wielkopolskiego Regionalnego Programu Operacyjnego na lata 2007 2013 w zakresie wypełniania wniosków o dofinansowanie Wersja 1 Podręcznik
Bardziej szczegółowoWykład 5: PHP: praca z bazą danych MySQL
Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych
Bardziej szczegółowoZaawansowany kurs języka Python
Środowisko Django początki 10 stycznia 2014 Plan wykładu 1 2 Plan wykładu 1 2 Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych. Co to jest Django Oparty o Pythona framework
Bardziej szczegółowoInternetowy serwis Era mail Aplikacja sieci Web
Internetowy serwis Era mail Aplikacja sieci Web (www.login.eramail.pl) INSTRUKCJA OBSŁUGI Spis treści Internetowy serwis Era mail dostępny przez komputer z podłączeniem do Internetu (aplikacja sieci Web)
Bardziej szczegółowo4. Jak połączyć profil autora w bazie Scopus z identyfikatorem ORCID. 5. Jak połączyć ResearcherID (Web of Science) z identyfikatorem ORCID
Identyfikator Plan wystąpienia: 1. Dlaczego ORCID 2. Co to jest ORCID 3. ORCID jak założyć profil 4. Jak połączyć profil autora w bazie Scopus z identyfikatorem ORCID 5. Jak połączyć ResearcherID (Web
Bardziej szczegółowoWybrane działy Informatyki Stosowanej
Wybrane działy Informatyki Stosowanej JSP - Java Server Pages dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2019 Aplikacje i skrypty WWW klasyfikacja
Bardziej szczegółowoTworzenie prezentacji w MS PowerPoint
Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje
Bardziej szczegółowoWprowadzenie do projektu QualitySpy
Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować
Bardziej szczegółowoWPROWADZENIE DO BAZ DANYCH
WPROWADZENIE DO BAZ DANYCH Pojęcie danych i baz danych Dane to wszystkie informacje jakie przechowujemy, aby w każdej chwili mieć do nich dostęp. Baza danych (data base) to uporządkowany zbiór danych z
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie
Bardziej szczegółowohttps://lsi.ncbr.gov.pl
Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 2/1.1.2/2015 INFORMACJE OGÓLNE 1. Wnioski o dofinansowanie projektu w ramach konkursu nr 2/1.1.2/2015
Bardziej szczegółowoKurs rozszerzony języka Python
Środowisko Django, cz. 3 19 stycznia 2018 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu
Bardziej szczegółowoInstrukcja zarządzania kontami i prawami. użytkowników w systemie express V. 5
Instrukcja zarządzania kontami i prawami użytkowników w systemie express V. 5 1 SPIS TREŚCI 1. Logowanie do systemu.3 2. Administracja kontami użytkowników..4 2.1. Dodawanie grup użytkowników....5 2.2.
Bardziej szczegółowoCREATE USER
Temat: Administrowanie użytkownikami bazy danych. Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość
Bardziej szczegółowoBazy danych - wykład wstępny
Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,
Bardziej szczegółowoInstrukcja użytkownika
Instrukcja użytkownika ul. Zawalna 1/5 51-118 Wrocław e-mail: biuro@innotechtion.pl www.innotechtion.pl Spis treści 1 Instalacja oprogramowania SMS Studio...2 2 Pierwsze uruchomienie... 4 2.1 Rejestracja...
Bardziej szczegółowo6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia
6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia 1. Kolejne zadanie będzie polegało na utworzeniu formularza tabelarycznego prezentującego utwory określonego wykonawcy. Formularz utworzymy
Bardziej szczegółowoPlan. Stan sesji (1/2) Stan sesji (2/2) Stan sesji Tworzenie przycisku Integracja prostego formularza z raportem Tworzenie formularza z raportem
5 Integracja stron aplikacji, tworzenie zintegrowanych formularzy i raportów Plan Stan sesji Tworzenie przycisku Integracja prostego formularza z raportem Tworzenie formularza z raportem 2 Stan sesji (1/2)
Bardziej szczegółowoLABORATORIUM 8,9: BAZA DANYCH MS-ACCESS
UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotowali: mgr inż. Arkadiusz Bukowiec mgr inż. Remigiusz Wiśniewski LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS
Bardziej szczegółowoFacebook, Nasza klasa i inne. www.facebook.com. podstawowe informacje o serwisach społeczności internetowych. Cz. 2. Facebook
Facebook, Nasza klasa i inne podstawowe informacje o serwisach społeczności internetowych Cz. 2. Facebook www.facebook.com Facebook to drugi najczęściej wykorzystywany portal społecznościowy w Polsce i
Bardziej szczegółowo8. Listy wartości, dodatkowe informacje dotyczące elementów i przycisków
8. Listy wartości, dodatkowe informacje dotyczące elementów i przycisków 1. Jak wspomnieliśmy wcześniej, nie można wymagać od użytkowników, znajomości wszystkich identyfikatorów prowadzących, wykonawców
Bardziej szczegółowoIntegracja z Facebook. Wersja 7.2.4
Integracja z Facebook Wersja 7.2.4 UWAGA Prawa wynikające z Warunków Gwarancji Użytkownik nabywa po rejestracji programu u Producenta. Dokumentem potwierdzającym rejestrację jest Certyfikat Rejestracji
Bardziej szczegółowoEXSO-CORE - specyfikacja
EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.
Bardziej szczegółowoPodręcznik użytkownika Obieg dokumentów
Podręcznik użytkownika Obieg dokumentów Opracowany na potrzeby wdrożenia dla Akademii Wychowania Fizycznego im. Eugeniusza Piaseckiego w Poznaniu W ramach realizacji projektu: Uczelnia jutra wdrożenie
Bardziej szczegółowoREFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
Bardziej szczegółowoRuby i Ruby on Rails. Mateusz Drożdżyński
Ruby i Ruby on Rails Mateusz Drożdżyński Co to Ruby? Dynamiczny, obiektowy język programowania, stworzony przez Yukihiro Matsumoto Pojawił się w tym samym roku co Java (1995) Przejrzysta, prosta i intuicyjna
Bardziej szczegółowoInstrukcja obsługi narzędzia API
Instrukcja obsługi narzędzia API 2012 1. Podstawowe informacje Aby umożliwić maksymalną integrację systemów i stron partnerów z naszym systemem, stworzyliśmy specjalne API, które umożliwia generowanie
Bardziej szczegółowoDuszpasterstwo Akademickie Petra. Podręcznik administratora newslettera html
Duszpasterstwo Akademickie Petra Podręcznik administratora newslettera html 1 Jak zacząć? Wejdź na www.mailchimp.com Załóż nowe konto. Kliknij SIGN UP Podaj email, wybierz nazwę użytkownika (np. Petra-mojemiasto)
Bardziej szczegółowoFrogfoot CMS.
Frogfoot CMS www.frogriot.com Spis treści: Kluczowe zastosowania Zalety Frogriot CMS Lista głównych modułów 4 5 7 Główne moduły Dashboard Formularze Webinary Konkursy Edytor treści Drzewo strony Użytkownicy
Bardziej szczegółowoZawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6
Zawartość Wstęp... 1 Instalacja... 2 Konfiguracja... 2 Uruchomienie i praca z raportem... 6 Wstęp Rozwiązanie przygotowane z myślą o użytkownikach którzy potrzebują narzędzie do podziału, rozkładu, rozbiórki
Bardziej szczegółowoBaza danych do przechowywania użytkowników
System logowania i rejestracji jest bardzo przydatną funkcjonalnością na każdej stronie. Umożliwia sprawną identyfikację i zarządzanie użytkownikami. Strona ze skryptem logowania nabiera dużej wartości.
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9
Wdrożenie modułu płatności eservice dla systemu Magento 1.4 1.9 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do
Bardziej szczegółowoREFERAT O PRACY DYPLOMOWEJ
REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja mobilnego systemu wspomagającego organizowanie zespołowej aktywności fizycznej Autor: Krzysztof Salamon W dzisiejszych czasach życie ludzi
Bardziej szczegółowoInstalacja SQL Server Express. Logowanie na stronie Microsoftu
Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy
Bardziej szczegółowoPodręcznik Integracji
Podręcznik Integracji Spis treści 1. Integracja oferty... 3 1.1. Samodzielne wprowadzanie oferty sklepu... 3 1.2. Automatyczne wprowadzanie oferty z pliku XML... 3 1.3. Cyklicznie pobieranie oferty ze
Bardziej szczegółowoKUP KSIĄŻKĘ NA: PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA
KUP KSIĄŻKĘ NA: WWW.PRAKTYCZNEPHP.PL PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA KOMUNIKATY DLA UŻYTKOWNIKA W większości aplikacji potrzebujesz mieć możliwość powiadomienia użytkownika o rezultacie
Bardziej szczegółowo