Doc
This commit is contained in:
parent
0a3d0c7a87
commit
13cd312be8
9 changed files with 87 additions and 20 deletions
|
|
@ -2,19 +2,28 @@
|
|||
\catcode `"\active
|
||||
\babel@aux{ngerman}{}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Einleitung}{3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Struktur}{3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Routing in Django}{3}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}}{3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Struktur}{3}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Die typische Verzeichnisstruktur eines Django Servers}}{4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Erstellung}{4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Erstellung}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Verzeichnisstruktur, die der \$ django-admin startproject server Befehl erzeugt}}{4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}manage.py}{4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}db.sqlite3}{5}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}server/server}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.1}\_\_init\_\_.py}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.2}settings.py}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.3}urls.py}{5}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}manage.py}{4}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}db.sqlite3}{5}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}server/server}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1}\_\_init\_\_.py}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.2}settings.py}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.3}urls.py}{5}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.4}wsgi.py}{6}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}server/app1}{6}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.1}admin.py}{6}}
|
||||
\gdef\minted@oldcachelist{,
|
||||
default-pyg-prefix.pygstyle,
|
||||
default.pygstyle,
|
||||
1EF5F198DB11D884A8F3F8166C390F5847D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||
20EC931F8490D378180FA3F951C421E447D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||
C979C1D44B204897A3DDD0DB9A0A5E7147D599A9433F896BEC25BBDC7D4D3BE9.pygtex}
|
||||
C979C1D44B204897A3DDD0DB9A0A5E7147D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||
D608A7419D2E2B1B9DC8374CBF30931C47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||
90BB626EF9CFA5AAE8FC387BE92CE4C047D599A9433F896BEC25BBDC7D4D3BE9.pygtex}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.2}apps.py}{8}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.3}forms.py}{8}}
|
||||
|
|
|
|||
BIN
doc/Django.pdf
BIN
doc/Django.pdf
Binary file not shown.
Binary file not shown.
|
|
@ -6,6 +6,7 @@
|
|||
\usepackage{dirtree}
|
||||
\usepackage{float}
|
||||
\usepackage{minted}
|
||||
\usepackage{graphicx}
|
||||
|
||||
\pagestyle{fancy}
|
||||
|
||||
|
|
@ -38,7 +39,9 @@ Django stellt eine grundlegende Struktur für die Entwicklung zur Verfügung. So
|
|||
\item Eine Grundstruktur, die Modularität unterstützt und das einfache Installieren oder Entfernen von sogenannten ''Apps'' ermöglicht
|
||||
\end{itemize}
|
||||
Es ist also kaum notwendig, jedoch durchaus möglich, als Entwickler noch SQL zu schreiben wenn man mit dem Django Web-Framework entwickelt.
|
||||
|
||||
\section{Routing in Django}
|
||||
Das grundlegende und wichtigste Prinzip in Django ist das sogenannte ''Routing''. Dieses Prinzip beschreibt den Weg, den eine Anfrage zurücklegt um zu einer Antwort zu führen.
|
||||
\subsection{}
|
||||
\section{Struktur}
|
||||
Ein typischer Django Server ist aus sogenannten ''Apps'' aufgebaut. Diese werden entweder vom Entwickler selber geschrieben oder können via pip (dem Python Paket Manager) installiert werden. Ein standard Verzeichnisaufbau ist in Abbildung 1 dargestellt.
|
||||
\newpage
|
||||
|
|
@ -111,10 +114,59 @@ Diese Datei ist der erste und wichtigste Teil des Django Routing Systems. Über
|
|||
path('settings/', include('settings_app.urls')),
|
||||
]
|
||||
\end{minted}
|
||||
Hier werden zuerst Pakete für das admin-Interface und Pakete für das URL-Routing importiert. Anschließend wird eine Liste urlpatterns definiert. Diese enthält alle URL Pfade.
|
||||
Hier werden zuerst Pakete für das admin-Interface und Pakete für das URL-Routing importiert. Anschließend wird eine Liste urlpatterns definiert. Diese enthält alle URL Pfade. include() Importiert dabei die urls.py Dateien aus den anderen apps.
|
||||
|
||||
\subsubsection{wsgi.py}
|
||||
Diese Datei stellt ein ''application'' genanntes WSGI Objekt zur Verfügung. Es wird zum starten des Testservers genutzt. In Verbindung mit ''mod\_wsgi'' kann auch Apache dieses Objekt nutzen.\footnote{Django Dokumentation https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/}
|
||||
\subsection{server/app1}
|
||||
Dieses Verzeichnis enthält alle Dateien, die eine App ausmachen. In diesem Fall heißt die App beispielhaft ''app1''. Die Dateien, die in Abb 1 erscheinen, jedoch hier nicht erwähnt werden, haben die selbe Funktion wie die gleichnamigen Dateien im ''server/server'' Ordner.
|
||||
|
||||
\subsubsection{admin.py}
|
||||
Die admin.py dient dazu das Django Admin Interface zu konfigurieren. In ihr werden die Models registriert, die auf der admin Seite zu sehen sind, und wie diese dargestellt werden sollen. Sie sieht beispielsweise in der ''object\_adder'' app folgendermaßen aus:
|
||||
|
||||
\begin{minted}[linenos, frame=lines, framesep=2mm]{Python}
|
||||
from django.contrib import admin
|
||||
from .models import Object, Category
|
||||
|
||||
|
||||
class ObjectAdmin(admin.ModelAdmin):
|
||||
list_display = ('title', 'ammout', 'uuid', 'img')
|
||||
|
||||
|
||||
class CategoryAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'id')
|
||||
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(Object, ObjectAdmin)
|
||||
admin.site.register(Category, CategoryAdmin)
|
||||
\end{minted}
|
||||
In Zeile 2 werden die in der models.py definierten Models importiert um Zugriff auf diese zu erlangen.
|
||||
\newline
|
||||
Anschließend wird für jedes Model eine Klasse erstellt. In dieser Klasse wird jeweils eine ''list\_display'' Variable definiert, die ein Tupel enthält, mit dem alle darzustellenden Attribute an die admin library übergeben werden können. Diese Abmin-Klassen müssen jetzt noch zusammen mit dem Model an die admin library übergeben werden. Dies erfolgt duch die Befehle in Zeile 14 und 15. Dieser Code erzeugt demnach folgendes Admin-Interface:
|
||||
\newline
|
||||
\begin{center}
|
||||
\includegraphics[width=\linewidth, height=7.5cm]{django_admin_objects.png}
|
||||
\quad
|
||||
\\[\baselineskip]% adds vertical line spacing
|
||||
\includegraphics[width=\linewidth]{django_admin_cats.png}
|
||||
\end{center}
|
||||
|
||||
Ohne die ''list\_display'' Angebe würde nur der primary key des Models angezeigt und das Interface sähe folgendermaßen aus:
|
||||
\newline
|
||||
\begin{center}
|
||||
\includegraphics[width=\linewidth]{django_admin_obj_pk.png}
|
||||
\end{center}
|
||||
\subsubsection{apps.py}
|
||||
Hier ist der Name der app definiert. Diese Datei ist außerdem notwendig, damit die App von Django als solche erkannt wird.
|
||||
\begin{minted}[linenos, frame=lines, framesep=2mm]{Python}
|
||||
from django.apps import AppConfig
|
||||
|
||||
class ObjectAdderConfig(AppConfig):
|
||||
name = 'objectadder'
|
||||
\end{minted}
|
||||
\subsubsection{forms.py}
|
||||
In dieser Datei werden Formulare definiert. So beispielsweise das Formular zur Erstellung von Objekten und Kategorien.
|
||||
|
||||
|
||||
\end{document}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,17 @@
|
|||
\babel@toc {ngerman}{}
|
||||
\contentsline {section}{\numberline {1}Einleitung}{3}
|
||||
\contentsline {section}{\numberline {2}Struktur}{3}
|
||||
\contentsline {subsection}{\numberline {2.1}Erstellung}{4}
|
||||
\contentsline {subsection}{\numberline {2.2}manage.py}{4}
|
||||
\contentsline {subsection}{\numberline {2.3}db.sqlite3}{5}
|
||||
\contentsline {subsection}{\numberline {2.4}server/server}{5}
|
||||
\contentsline {subsubsection}{\numberline {2.4.1}\_\_init\_\_.py}{5}
|
||||
\contentsline {subsubsection}{\numberline {2.4.2}settings.py}{5}
|
||||
\contentsline {subsubsection}{\numberline {2.4.3}urls.py}{5}
|
||||
\contentsline {section}{\numberline {2}Routing in Django}{3}
|
||||
\contentsline {subsection}{\numberline {2.1}}{3}
|
||||
\contentsline {section}{\numberline {3}Struktur}{3}
|
||||
\contentsline {subsection}{\numberline {3.1}Erstellung}{4}
|
||||
\contentsline {subsection}{\numberline {3.2}manage.py}{4}
|
||||
\contentsline {subsection}{\numberline {3.3}db.sqlite3}{5}
|
||||
\contentsline {subsection}{\numberline {3.4}server/server}{5}
|
||||
\contentsline {subsubsection}{\numberline {3.4.1}\_\_init\_\_.py}{5}
|
||||
\contentsline {subsubsection}{\numberline {3.4.2}settings.py}{5}
|
||||
\contentsline {subsubsection}{\numberline {3.4.3}urls.py}{5}
|
||||
\contentsline {subsubsection}{\numberline {3.4.4}wsgi.py}{6}
|
||||
\contentsline {subsection}{\numberline {3.5}server/app1}{6}
|
||||
\contentsline {subsubsection}{\numberline {3.5.1}admin.py}{6}
|
||||
\contentsline {subsubsection}{\numberline {3.5.2}apps.py}{8}
|
||||
\contentsline {subsubsection}{\numberline {3.5.3}forms.py}{8}
|
||||
|
|
|
|||
BIN
doc/django_admin_cats.png
Normal file
BIN
doc/django_admin_cats.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
doc/django_admin_obj_pk.png
Normal file
BIN
doc/django_admin_obj_pk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
doc/django_admin_objects.png
Normal file
BIN
doc/django_admin_objects.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
Loading…
Add table
Add a link
Reference in a new issue