This commit is contained in:
root 2019-02-07 16:56:55 +01:00
parent f6af55f952
commit 1aa9df5f7f
5 changed files with 66 additions and 10 deletions

View file

@ -24,20 +24,24 @@
\@writefile{toc}{\contentsline {section}{\numberline {3}Routing in Django}{11}} \@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.1}Root Url Config}{11}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{12}} \@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{, \gdef\minted@oldcachelist{,
default-pyg-prefix.pygstyle, default-pyg-prefix.pygstyle,
default.pygstyle, default.pygstyle,
1EF5F198DB11D884A8F3F8166C390F5847D599A9433F896BEC25BBDC7D4D3BE9.pygtex, 1EF5F198DB11D884A8F3F8166C390F5847D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
20EC931F8490D378180FA3F951C421E447D599A9433F896BEC25BBDC7D4D3BE9.pygtex, 20EC931F8490D378180FA3F951C421E447D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
C979C1D44B204897A3DDD0DB9A0A5E7147D599A9433F896BEC25BBDC7D4D3BE9.pygtex, A9919588A6D91591D3CAA4F3001F345B47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
D608A7419D2E2B1B9DC8374CBF30931C47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, D608A7419D2E2B1B9DC8374CBF30931C47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
90BB626EF9CFA5AAE8FC387BE92CE4C047D599A9433F896BEC25BBDC7D4D3BE9.pygtex, 90BB626EF9CFA5AAE8FC387BE92CE4C047D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
69FD008A06C526EA627001AB2D9375FA47D599A9433F896BEC25BBDC7D4D3BE9.pygtex, B348860DA4CE0BC9507967FD35D8F1EA47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
C16B4A697A35E1BE87FC42461038F02647D599A9433F896BEC25BBDC7D4D3BE9.pygtex, 477C16590DB512BBD87ADB12359B39BB47D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
CF41293164F73EA799796EA930DC2D8047D599A9433F896BEC25BBDC7D4D3BE9.pygtex, CF41293164F73EA799796EA930DC2D8047D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
A055FD522A0AEB526BEA0D243A3FBE3647D599A9433F896BEC25BBDC7D4D3BE9.pygtex, A055FD522A0AEB526BEA0D243A3FBE3647D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
AFBBA6C854D3F40D46E4B39281586D0347D599A9433F896BEC25BBDC7D4D3BE9.pygtex} AFBBA6C854D3F40D46E4B39281586D0347D599A9433F896BEC25BBDC7D4D3BE9.pygtex,
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}View}{13}} 357F88DDBB0C7756F8AB5E672939127047D599A9433F896BEC25BBDC7D4D3BE9.pygtex}
\@writefile{toc}{\contentsline {section}{\numberline {4}Template rendering}{13}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}''Django template language''}{14}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Den Inventarisierungsserver einrichten}{13}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}Ein Beispiel}{14}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Erkl\IeC {\"a}rung der Benutzeroberfl\IeC {\"a}che}{13}} \@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}}

Binary file not shown.

Binary file not shown.

View file

@ -8,6 +8,7 @@
\usepackage{minted} \usepackage{minted}
\usepackage{graphicx} \usepackage{graphicx}
\usepackage[hyphens]{url} \usepackage[hyphens]{url}
\usepackage{listings}
\pagestyle{fancy} \pagestyle{fancy}
@ -19,6 +20,23 @@
\author{Clemens Dautermann} \author{Clemens Dautermann}
\date{2. Januar 2019 bis \today} \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} \begin{document}
\maketitle \maketitle
@ -277,6 +295,37 @@ Dies liegt daran, dass in der ''path()'' Funktion kein ''include()'' Statement m
\subsection{View} \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. 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} \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]
<html>
<body>
{% if Items is not None %}
<ul>
{% for item in items %}
<li>{{item.name}}</li>
{% endfor %}
</ul>
{% else %}
<p>Es wurde keine Liste übergeben</p>
{% endif %}
</body>
</html>
\end{lstlisting}
\section{Den Inventarisierungsserver einrichten} \section{Den Inventarisierungsserver einrichten}
\section{Erklärung der Benutzeroberfläche} \section{Erklärung der Benutzeroberfläche}

View file

@ -22,5 +22,8 @@
\contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{12} \contentsline {subsection}{\numberline {3.2}Weitere Url Konfigurationsdateien}{12}
\contentsline {subsection}{\numberline {3.3}View}{13} \contentsline {subsection}{\numberline {3.3}View}{13}
\contentsline {section}{\numberline {4}Template rendering}{13} \contentsline {section}{\numberline {4}Template rendering}{13}
\contentsline {section}{\numberline {5}Den Inventarisierungsserver einrichten}{13} \contentsline {subsection}{\numberline {4.1}Variablen an ein Template \IeC {\"u}bergeben}{13}
\contentsline {section}{\numberline {6}Erkl\IeC {\"a}rung der Benutzeroberfl\IeC {\"a}che}{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}