Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

framework.tex 5.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. \chapter{Framework}
  2. \label{ch:framework}
  3. Um die Website-Erweiterung realisieren zu können, wird zunächst festgelegt welche Programmierschnittstellen verwendet werden. Im Web-Backend fällt die Wahl auf die objektorientierte Sprache Python, die ausschlie"slich Serverseitig anwendbar ist. Der Programmaufbau Pythons macht den Code leicht lesbar und der einfache Syntax ermöglicht einen strukturierte Implementierung der Website([Ndu17]). Ein entscheidender Vorteil hierbei ist das dazugehörige Framework Django, auf das im folgenden Kapitel genauer eingegangen wird.
  4. \section{Django}
  5. Django ist ein Web-Framework, das auf einer Model-View-Presenter (MVP) Architektur basiert. Ähnlich wie der Model-View-Controller sind die Interaktionen zwischen Model und View die Auswahl und Ausführung von Befehlen und das Auslösen von Ereignissen (vgl. Abbildung 2.1). Da die View aber hier bereits den Gro"steil des Controllers übernimmt, ist der MVP eine Überarbeitung. Der Teil, der Elemente des Modells auswählt, Operationen durchführt und alle Ereignisse kapselt, ergibt die Presenter-Klasse([She09]). Durch die direkte Bindung von Daten und View, geregelt durch den Presenter, wird die Codemenge der Applikation stark reduziert.
  6. \begin{figure}[!h]
  7. \centering
  8. \includegraphics[width=0.5\textwidth]{figures/MVP}
  9. \caption{Vereinfachter MVP}
  10. \hfill
  11. \end{figure}
  12. Der Prozess vom Anfragen der URL über den Server, bis hin zur fertig gerenderten Website kann wie folgt vereinfacht darstellen. Der User gibt eine URL im Browser ein und sendet sie an den Web-Server. Das Interface WSGI am Web-Server leitet den Request zum passenden Objekt einer Applikation weiter. Da das Framework über eine explizite Zuweisung der verschiedenen Seiten verfügt, iteriert der urlresolver über die vorhandene URL-Struktur im Code (url.py). Gibt es eine Übereinstimmung, wird die damit verknüpfte Funktion in der View (view.py) aufgerufen. Hier ist die gesamte Logik der Website lokalisiert. Wie bereits erwähnt, ist es möglich unter Anderem auf die Datenbank der Applikation zuzugreifen und Eingaben des Users über eine Form zu verarbeiten. Nachdem werden die Informationen der View an das Template weitergereicht. Es handelt sich dabei um eine einfache HTML-Seite in der der strukturelle Aufbau im Frontend festgelegt wird. Die Informationen der View können hier zwischen doppelt-geschweiften Klammern eingebunden werden und, wenn nötig, mit einfachen Python-Befehlen anpassen. Nun kann das Template einen Response an den Web-Server schicken und die fertige Seite wird beim Klienten im Browser gerendert (vgl. Abbildung 2.1).
  13. \begin{figure}[!h]
  14. \centering
  15. \includegraphics[width=0.5\textwidth]{figures/request-response-cycle}
  16. \caption{Request-Response-Kreislauf des Django Frameworks}
  17. \hfill
  18. \end{figure}
  19. \subsection {Besonderheiten}
  20. Das Django-Framework bringt einige Besonderheiten mit sich, die beim implementiern des Prototypen von Bedeutung sind. Diese werden im Folgenden beschrieben.
  21. Die Administratoroberfläche ist eines der hilfreichsten Werkzeugen des gesamten Frameworks. Es stellt die Metadaten der Modelle aus dem Code visuell dar. Verifizierte Benutzer können die Daten nicht nur schnell erfassen, sondern diese auch editieren und verwalten. Das Recht, das Admin-Backend uneingeschränkt zu benutzen, ist dem sogenannten superuser vorenthalten. Dieser kann beim erstmaligen zuweisen nur über die Kommandozeile eingerichtet werden. Ist bereits ein superuser vorhanden, kann dieser im Admin-Backend weiteren Benutzern den gleichen Handlungsfreiraum einräumen. Zudem gibt es noch weitere Stufen der Zugangsberechtigungen, Staff- und Active-Status, die für eine breitere Gruppe von Benutzern geeignet ist.
  22. Um die gestaffelten Zugangsberechtigungen auch auf der Website umsetzen zu können, stellt Django ... zur Verfügung.
  23. Natürlich lassen sich die Dekorator auch für andere Zwecke vor Funktionen paltzieren.
  24. Sicherheit
  25. \section{Erweiterungen}
  26. Durch das hohe Ansehen, dass Django in der Branche genie"st ist der Pool an Erweiterungen gro"s.
  27. pip?
  28. allg Erweiterungen und dann genauer Taggable Manager
  29. \subsection {Taggable-Manager}
  30. Django-taggit ist eine Erweiterung von Alex Gaynor, einem Entwickler aus Washingtion DC. Das Add-on ermöglicht das Verwenden von Tags die automatisch mit einem eindeutigen Slug versehen werden. Um dieses zu installieren wird der folgende Befehl in die Kommandozeile eingefügt:
  31. \\
  32. \noindent\hspace*{10mm}%
  33. \$ pip install django-taggit
  34. \\
  35. Im model.py wird das Feld tag neu erstellt und als Taggable Manager definiert.
  36. Au"serdem muss taggit in der settings.py Datei unter INSTALLED\_APPS ergänzt werden. Um dem Programm zu sagen, dass nun eine neue Liste der Datenbank hinzugefügt werden muss, werden folgende Befehle in die Kommandozeile eingefügt:
  37. \\
  38. \noindent\hspace*{10mm}%
  39. \$ python3 manage.py makemigrations \\
  40. \noindent\hspace*{10mm}%
  41. \$ python3 manage.py migrate
  42. \\
  43. Im Admin-Backend kann nun geprüft werden, ob das neue Feld in die Datenbank integriert wurde. Neue Tags können in das Textfeld eingetragen werden. Der Parser verarbeitet jedes Wort, dass durch ein Komma oder ein Leerzeichen getrennt ist als ein Tag. Soll ein dieses jedoch aus mehreren Wörtern bestehen so müssen diese zwischen Anführungszeichen stehen. Standardmäßig unterscheidet der Taggable Manager zwischen Groß- und Kleinschreibung, ist also case sensitive. Ändern kann man das, indem der Boolean TAGGIT\_CASE\_INSENSITIVE in der settings.py auf True gestellt wird.
  44. \section{Bootstrap}