Doc
This commit is contained in:
parent
13cd312be8
commit
1fbb1c39bf
5 changed files with 118 additions and 37 deletions
|
|
@ -2,21 +2,24 @@
|
||||||
\catcode `"\active
|
\catcode `"\active
|
||||||
\babel@aux{ngerman}{}
|
\babel@aux{ngerman}{}
|
||||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Einleitung}{3}}
|
\@writefile{toc}{\contentsline {section}{\numberline {1}Einleitung}{3}}
|
||||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Routing in Django}{3}}
|
\@writefile{toc}{\contentsline {section}{\numberline {2}Struktur}{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{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Die typische Verzeichnisstruktur eines Django Servers}}{4}}
|
||||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Erstellung}{4}}
|
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Erstellung}{4}}
|
||||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Verzeichnisstruktur, die der \$ django-admin startproject server Befehl erzeugt}}{4}}
|
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Verzeichnisstruktur, die der \$ django-admin startproject server Befehl erzeugt}}{4}}
|
||||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}manage.py}{4}}
|
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}manage.py}{4}}
|
||||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}db.sqlite3}{5}}
|
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}db.sqlite3}{5}}
|
||||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}server/server}{5}}
|
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}server/server}{5}}
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1}\_\_init\_\_.py}{5}}
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.1}\_\_init\_\_.py}{5}}
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.2}settings.py}{5}}
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.2}settings.py}{5}}
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.3}urls.py}{5}}
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.3}urls.py}{5}}
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.4}wsgi.py}{6}}
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.4}wsgi.py}{6}}
|
||||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}server/app1}{6}}
|
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}server/app1}{6}}
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.1}admin.py}{6}}
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.1}admin.py}{6}}
|
||||||
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.2}apps.py}{8}}
|
||||||
|
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.3}forms.py}{8}}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {3}Routing in Django}{9}}
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Root Url Config}{9}}
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{10}}
|
||||||
\gdef\minted@oldcachelist{,
|
\gdef\minted@oldcachelist{,
|
||||||
default-pyg-prefix.pygstyle,
|
default-pyg-prefix.pygstyle,
|
||||||
default.pygstyle,
|
default.pygstyle,
|
||||||
|
|
@ -24,6 +27,9 @@
|
||||||
20EC931F8490D378180FA3F951C421E447D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
20EC931F8490D378180FA3F951C421E447D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||||
C979C1D44B204897A3DDD0DB9A0A5E7147D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
C979C1D44B204897A3DDD0DB9A0A5E7147D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||||
D608A7419D2E2B1B9DC8374CBF30931C47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
D608A7419D2E2B1B9DC8374CBF30931C47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||||
90BB626EF9CFA5AAE8FC387BE92CE4C047D599A9433F896BEC25BBDC7D4D3BE9.pygtex}
|
90BB626EF9CFA5AAE8FC387BE92CE4C047D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.2}apps.py}{8}}
|
69FD008A06C526EA627001AB2D9375FA47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.5.3}forms.py}{8}}
|
A055FD522A0AEB526BEA0D243A3FBE3647D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
|
||||||
|
AFBBA6C854D3F40D46E4B39281586D0347D599A9433F896BEC25BBDC7D4D3BE9.pygtex}
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}View}{11}}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {4}Template rendering}{11}}
|
||||||
|
|
|
||||||
BIN
doc/Django.pdf
BIN
doc/Django.pdf
Binary file not shown.
Binary file not shown.
|
|
@ -39,12 +39,8 @@ 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
|
\item Eine Grundstruktur, die Modularität unterstützt und das einfache Installieren oder Entfernen von sogenannten ''Apps'' ermöglicht
|
||||||
\end{itemize}
|
\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.
|
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}
|
\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.
|
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
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\dirtree{%
|
\dirtree{%
|
||||||
.1 server.
|
.1 server.
|
||||||
|
|
@ -92,7 +88,7 @@ In dieser Datei wird die SQL Datenbank gespeichert, die der Server nutzt. Sie wi
|
||||||
|
|
||||||
\subsection{server/server}
|
\subsection{server/server}
|
||||||
\subsubsection{\_\_init\_\_.py}
|
\subsubsection{\_\_init\_\_.py}
|
||||||
Diese Datei befindet sich im Wurzelverzeichnis jeder App. Sie macht für Python erkennbar, dass es sich bei dem Inhalt dieses Ordners um ein Python Modul handelt. Somit kann die App einfach geteilt und von anderen Nutzern verwendet werden.
|
Diese Datei befindet sich im Wurzelverzeichnis jeder App. Sie macht für Python erkennbar, dass es sich bei dem Inhalt dieses Ordners um ein Python Modul handelt. Somit kann die App einfach geteilt und von anderen Nutzern verwendet werden.[linenos, frame=lines, framesep=2mm]{Python}
|
||||||
|
|
||||||
\subsubsection{settings.py}
|
\subsubsection{settings.py}
|
||||||
In dieser Datei befinden sich die Einstellungen für den Django Server. Mit ihrer Hilfe werden Zeitzone, Sprache, Datenbankkonfiguration und viele andere Konfigurationen verwaltet. Man kann sie auch verwenden um eigene Einstellungsmöglichkeiten anzubieten. Dafür definiert man eine Konstante (in Python typischerweise durch Großbuchstaben ausgedrückt) und einen Wert. Zum Beispiel\newline LOGIN\_REDIRECT\_URL = ''/''. Im Falle dieses Projektes wurde beispielsweise die Konstante LOGFILE = 'serverlog.log' definiert um zentral auf die Logdatei zugreifen zu können. Auf die in der settings.py definierten Werte kann aus jeder App zugegriffen werden, indem unter Benutzung der Anweisung\newline
|
In dieser Datei befinden sich die Einstellungen für den Django Server. Mit ihrer Hilfe werden Zeitzone, Sprache, Datenbankkonfiguration und viele andere Konfigurationen verwaltet. Man kann sie auch verwenden um eigene Einstellungsmöglichkeiten anzubieten. Dafür definiert man eine Konstante (in Python typischerweise durch Großbuchstaben ausgedrückt) und einen Wert. Zum Beispiel\newline LOGIN\_REDIRECT\_URL = ''/''. Im Falle dieses Projektes wurde beispielsweise die Konstante LOGFILE = 'serverlog.log' definiert um zentral auf die Logdatei zugreifen zu können. Auf die in der settings.py definierten Werte kann aus jeder App zugegriffen werden, indem unter Benutzung der Anweisung\newline
|
||||||
|
|
@ -166,7 +162,83 @@ class ObjectAdderConfig(AppConfig):
|
||||||
name = 'objectadder'
|
name = 'objectadder'
|
||||||
\end{minted}
|
\end{minted}
|
||||||
\subsubsection{forms.py}
|
\subsubsection{forms.py}
|
||||||
In dieser Datei werden Formulare definiert. So beispielsweise das Formular zur Erstellung von Objekten und Kategorien.
|
In dieser Datei werden Formulare definiert. So beispielsweise das Formular zur Erstellung von Objekten und Kategorien, das folgendermaßen aussieht:
|
||||||
|
\begin{minted}[linenos, frame=lines, framesep=2mm]{Python}
|
||||||
|
from django.forms import ModelForm, TextInput
|
||||||
|
from .models import Object, Category
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Object
|
||||||
|
fields = ('ammout', 'title', 'img',
|
||||||
|
'description', 'category')
|
||||||
|
widgets = {
|
||||||
|
'title': TextInput(),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class CategoryForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Category
|
||||||
|
fields = ['name']
|
||||||
|
widgets = {
|
||||||
|
'name': TextInput()
|
||||||
|
}
|
||||||
|
\end{minted}
|
||||||
|
Hier werden zwei Formulare definiert. Es wird angegeben mit welchem model das Formular asoziiert werden soll und welche Felder angezeigt werden sollen. Außerdem wird definiert, dass für das name und das title Feld ein ''TextInput()'' Feld genutzt werden soll.
|
||||||
|
|
||||||
|
|
||||||
|
\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. Routing in Django funktioniert, indem die Url mit Hilfe von Regular Expressions in Teile aufgespalten wird, die dann einzeln bis letztendlich ein HTML Template zurück gegeben wird verfolgt werden.
|
||||||
|
\subsection{Root Url Config}
|
||||||
|
Diese Datei ist die grundlegende Url Konfigurationsdatei. In ihr schaut der Server zuerst nach. Sie befindet sich im server/server/urls.py Ordner und gehört zur Hauptapp des Servers. Sie kann beispielsweise folgendermaßen aussehen:
|
||||||
|
\begin{minted}[linenos, frame=lines, framesep=2mm]{Python}
|
||||||
|
"""invsystem URL Configuration
|
||||||
|
|
||||||
|
The `urlpatterns` list routes URLs to views. For more
|
||||||
|
information please see:
|
||||||
|
https://docs.djangoproject.com/en/2.1/topics/http/urls/
|
||||||
|
Examples:
|
||||||
|
Function views
|
||||||
|
1. Add an import: from my_app import views
|
||||||
|
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||||
|
Class-based views
|
||||||
|
1. Add an import: from other_app.views import Home
|
||||||
|
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||||
|
Including another URLconf
|
||||||
|
1. Import the include() function:
|
||||||
|
from django.urls import include, path
|
||||||
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
|
"""
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.urls import path, include
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('admin/', admin.site.urls),
|
||||||
|
path('accounts/', include('django.contrib.auth.urls')),
|
||||||
|
path('', include('user_manager.urls')),
|
||||||
|
path('add/', include('object_adder.urls')),
|
||||||
|
path('list/', include('object_lister.urls')),
|
||||||
|
path('settings/', include('settings_app.urls')),
|
||||||
|
]
|
||||||
|
\end{minted}
|
||||||
|
Die Kommentare werden beim Erstellen des Projektes automatisch generiert. Diese Datei erzeugt also sechs URL Pfade. Alle Pfade bis auf den ''/admin'' Pfad zeigen hier auf die urls.py Datei einer anderen App. Dies wird mit dem ''include()'' Statement erreicht. Die ''/admin'' Url wird mit hilfe des Admin Paketes gehandhabt, dass automatisch ein Admin Interface zur Datenbankverwaltung erzeugt.
|
||||||
|
\subsection{Weitere Url Konfigurationsdateien}
|
||||||
|
Mithilfe der ''include()'' Statements kann die Anfrage jetzt theoretisch durch eine unbegrenzte Zahl von urls.py Dateien geleitet werden. In diesem Beispiel wird in der settings\_app.urls jedoch direkt der sogenannte ''View'' zurück gegeben.
|
||||||
|
\newpage
|
||||||
|
\begin{minted}[linenos, frame=lines, framesep=2mm]{Python}
|
||||||
|
from django.urls import path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('', views.index, name='settings_index'),
|
||||||
|
]
|
||||||
|
\end{minted}
|
||||||
|
Dies liegt daran, dass in der ''path()'' Funktion kein ''include()'' Statement mehr steht sondern ''views.index''. Außerdem wird in der zweiten Zeile die ''views.py'' der App importiert.
|
||||||
|
\subsection{View}
|
||||||
|
Im sogenannten View wird findet die eigentliche Programmlogik statt. Hier werden Daten an die ''render()'' Funktion übergeben, die das gerenderte HTML Template zurück gibt. Diese Daten können beispielsweise aus einem Formular stammen oder von der Datenbank abgefragt sein. Hier werden auch POST Anfragen bearbeitet.
|
||||||
|
\section{Template rendering}
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,20 @@
|
||||||
\babel@toc {ngerman}{}
|
\babel@toc {ngerman}{}
|
||||||
\contentsline {section}{\numberline {1}Einleitung}{3}
|
\contentsline {section}{\numberline {1}Einleitung}{3}
|
||||||
\contentsline {section}{\numberline {2}Routing in Django}{3}
|
\contentsline {section}{\numberline {2}Struktur}{3}
|
||||||
\contentsline {subsection}{\numberline {2.1}}{3}
|
\contentsline {subsection}{\numberline {2.1}Erstellung}{4}
|
||||||
\contentsline {section}{\numberline {3}Struktur}{3}
|
\contentsline {subsection}{\numberline {2.2}manage.py}{4}
|
||||||
\contentsline {subsection}{\numberline {3.1}Erstellung}{4}
|
\contentsline {subsection}{\numberline {2.3}db.sqlite3}{5}
|
||||||
\contentsline {subsection}{\numberline {3.2}manage.py}{4}
|
\contentsline {subsection}{\numberline {2.4}server/server}{5}
|
||||||
\contentsline {subsection}{\numberline {3.3}db.sqlite3}{5}
|
\contentsline {subsubsection}{\numberline {2.4.1}\_\_init\_\_.py}{5}
|
||||||
\contentsline {subsection}{\numberline {3.4}server/server}{5}
|
\contentsline {subsubsection}{\numberline {2.4.2}settings.py}{5}
|
||||||
\contentsline {subsubsection}{\numberline {3.4.1}\_\_init\_\_.py}{5}
|
\contentsline {subsubsection}{\numberline {2.4.3}urls.py}{5}
|
||||||
\contentsline {subsubsection}{\numberline {3.4.2}settings.py}{5}
|
\contentsline {subsubsection}{\numberline {2.4.4}wsgi.py}{6}
|
||||||
\contentsline {subsubsection}{\numberline {3.4.3}urls.py}{5}
|
\contentsline {subsection}{\numberline {2.5}server/app1}{6}
|
||||||
\contentsline {subsubsection}{\numberline {3.4.4}wsgi.py}{6}
|
\contentsline {subsubsection}{\numberline {2.5.1}admin.py}{6}
|
||||||
\contentsline {subsection}{\numberline {3.5}server/app1}{6}
|
\contentsline {subsubsection}{\numberline {2.5.2}apps.py}{8}
|
||||||
\contentsline {subsubsection}{\numberline {3.5.1}admin.py}{6}
|
\contentsline {subsubsection}{\numberline {2.5.3}forms.py}{8}
|
||||||
\contentsline {subsubsection}{\numberline {3.5.2}apps.py}{8}
|
\contentsline {section}{\numberline {3}Routing in Django}{9}
|
||||||
\contentsline {subsubsection}{\numberline {3.5.3}forms.py}{8}
|
\contentsline {subsection}{\numberline {3.1}Root Url Config}{9}
|
||||||
|
\contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{10}
|
||||||
|
\contentsline {subsection}{\numberline {3.3}View}{11}
|
||||||
|
\contentsline {section}{\numberline {4}Template rendering}{11}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue