diff --git a/doc/Django.aux b/doc/Django.aux index 75bfec3..3c75e3a 100644 --- a/doc/Django.aux +++ b/doc/Django.aux @@ -24,20 +24,24 @@ \@writefile{toc}{\contentsline {section}{\numberline {3}Routing in Django}{11}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Root Url Config}{11}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}View}{13}} +\@writefile{toc}{\contentsline {section}{\numberline {4}Template rendering}{13}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Variablen an ein Template \IeC {\"u}bergeben}{13}} \gdef\minted@oldcachelist{, default-pyg-prefix.pygstyle, default.pygstyle, 1EF5F198DB11D884A8F3F8166C390F5847D599A9433F896BEC25BBDC7D4D3BE9.pygtex, 20EC931F8490D378180FA3F951C421E447D599A9433F896BEC25BBDC7D4D3BE9.pygtex, - C979C1D44B204897A3DDD0DB9A0A5E7147D599A9433F896BEC25BBDC7D4D3BE9.pygtex, + A9919588A6D91591D3CAA4F3001F345B47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, D608A7419D2E2B1B9DC8374CBF30931C47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, 90BB626EF9CFA5AAE8FC387BE92CE4C047D599A9433F896BEC25BBDC7D4D3BE9.pygtex, - 69FD008A06C526EA627001AB2D9375FA47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, - C16B4A697A35E1BE87FC42461038F02647D599A9433F896BEC25BBDC7D4D3BE9.pygtex, + B348860DA4CE0BC9507967FD35D8F1EA47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, + 477C16590DB512BBD87ADB12359B39BB47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, CF41293164F73EA799796EA930DC2D8047D599A9433F896BEC25BBDC7D4D3BE9.pygtex, A055FD522A0AEB526BEA0D243A3FBE3647D599A9433F896BEC25BBDC7D4D3BE9.pygtex, - AFBBA6C854D3F40D46E4B39281586D0347D599A9433F896BEC25BBDC7D4D3BE9.pygtex} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}View}{13}} -\@writefile{toc}{\contentsline {section}{\numberline {4}Template rendering}{13}} -\@writefile{toc}{\contentsline {section}{\numberline {5}Den Inventarisierungsserver einrichten}{13}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Erkl\IeC {\"a}rung der Benutzeroberfl\IeC {\"a}che}{13}} + AFBBA6C854D3F40D46E4B39281586D0347D599A9433F896BEC25BBDC7D4D3BE9.pygtex, + 357F88DDBB0C7756F8AB5E672939127047D599A9433F896BEC25BBDC7D4D3BE9.pygtex} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}''Django template language''}{14}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}Ein Beispiel}{14}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Den Inventarisierungsserver einrichten}{14}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Erkl\IeC {\"a}rung der Benutzeroberfl\IeC {\"a}che}{14}} diff --git a/doc/Django.pdf b/doc/Django.pdf index 83469d6..148e989 100644 Binary files a/doc/Django.pdf and b/doc/Django.pdf differ diff --git a/doc/Django.synctex.gz b/doc/Django.synctex.gz index 249e6d4..d718401 100644 Binary files a/doc/Django.synctex.gz and b/doc/Django.synctex.gz differ diff --git a/doc/Django.tex b/doc/Django.tex index b689dd8..9bc99c1 100644 --- a/doc/Django.tex +++ b/doc/Django.tex @@ -8,6 +8,7 @@ \usepackage{minted} \usepackage{graphicx} \usepackage[hyphens]{url} +\usepackage{listings} \pagestyle{fancy} @@ -19,6 +20,23 @@ \author{Clemens Dautermann} \date{2. Januar 2019 bis \today} +\lstset{literate= + {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 + {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1 + {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1 + {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1 + {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 + {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 + {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1 + {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1 + {Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1 + {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 + {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1 + {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1 + {€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1 + {»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 +} + \begin{document} \maketitle @@ -277,6 +295,37 @@ Dies liegt daran, dass in der ''path()'' Funktion kein ''include()'' Statement m \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} +Ein weiterer zentraler Aspekt des Django Frameworks ist das sogenannte ''Template rendering''. Es ermöglicht Variabln und dynamische Inhalte in das HTML Dokument einzubinden. +\subsection{Variablen an ein Template übergeben} +Um Variablen an das Template weiterzugeben wird im entsprechenden view als dritte Variable ein Dictionary übergeben. Auf die Werte in diesem Dictionary cann jetzt innerhalb des Templates beim rendern zugegriffen werden. +\begin{minted}[linenos, frame=lines, framesep=2mm]{Python} +from django.shortcuts import render + +def mainview(request): + context = {'a': 'b', 'beispiel': True, 'liste': range(10)} + return render(request, 'exampleapp/index.html', context) +\end{minted} +In diesem Beispiel wird context = {'a': 'b', 'beispiel': True, 'liste': range(10)} als Kontextdictionary übergeben. Das heißt innerhalb des HTML Templates kann auf die Variablen ''a'', ''beispiel'' und ''liste'' zugegriffen werden. +\subsection{''Django template language''} +In django existiert eine kleine eigene Skriptsprache, die ''django template language''. Mit ihrer Hilfe kann in Templates auf den übergebenen Kontext eingegangen werden. Sie enthält if-Abfragen, for-Schleifen und vieles mehr, kann aber auch einfach Variablen einbinden. +\subsubsection{Ein Beispiel} +Im folgenden Beispiel wird eine Liste namens ''Items'' übergeben. Es soll erst überprüft werden ob diese wirklich übergeben worden ist, und dann jedes Element ausgegeben werden. Der $<$head$>$ tag wurde im Beispiel weggelassen, da er für diese Demonstration irrelevant ist. +\begin{lstlisting}[language=html] + + + {% if Items is not None %} + + {% else %} +

Es wurde keine Liste übergeben

+ {% endif %} + + +\end{lstlisting} + \section{Den Inventarisierungsserver einrichten} \section{Erklärung der Benutzeroberfläche} diff --git a/doc/Django.toc b/doc/Django.toc index 19bb250..8c7afd4 100644 --- a/doc/Django.toc +++ b/doc/Django.toc @@ -22,5 +22,8 @@ \contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{12} \contentsline {subsection}{\numberline {3.3}View}{13} \contentsline {section}{\numberline {4}Template rendering}{13} -\contentsline {section}{\numberline {5}Den Inventarisierungsserver einrichten}{13} -\contentsline {section}{\numberline {6}Erkl\IeC {\"a}rung der Benutzeroberfl\IeC {\"a}che}{13} +\contentsline {subsection}{\numberline {4.1}Variablen an ein Template \IeC {\"u}bergeben}{13} +\contentsline {subsection}{\numberline {4.2}''Django template language''}{14} +\contentsline {subsubsection}{\numberline {4.2.1}Ein Beispiel}{14} +\contentsline {section}{\numberline {5}Den Inventarisierungsserver einrichten}{14} +\contentsline {section}{\numberline {6}Erkl\IeC {\"a}rung der Benutzeroberfl\IeC {\"a}che}{14}