{% extends 'base.html' %}{% block content %} | {% extends 'base.html' %}{% block content %} | ||||
{% load hitcount_tags %} | |||||
{% load hitcount_tags %} | |||||
<div class="post"> | <div class="post"> | ||||
{% if post.published_date %} | {% if post.published_date %} | ||||
<a class="btn btn-outline-dark" href="{% url 'post_publish' pk=post.pk %}">Publish</a> | <a class="btn btn-outline-dark" href="{% url 'post_publish' pk=post.pk %}">Publish</a> | ||||
{% endif %} {% if user.is_staff and user == post.author %} | {% endif %} {% if user.is_staff and user == post.author %} | ||||
<a class="btn btn-outline-dark" href="{% url 'post_edit' pk=post.pk %}"> | <a class="btn btn-outline-dark" href="{% url 'post_edit' pk=post.pk %}"> | ||||
<span class="glyphicon glyphicon-pencil">Edit</span> | |||||
<span class="glyphicon glyphicon-pencil">Bearbeiten</span> | |||||
</a> | </a> | ||||
<a class="btn btn-outline-dark" href="{% url 'post_remove' pk=post.pk %}"> | <a class="btn btn-outline-dark" href="{% url 'post_remove' pk=post.pk %}"> | ||||
<span class="glyphicon glyphicon-remove">Remove</span> | |||||
<span class="glyphicon glyphicon-remove">Löschen</span> | |||||
</a> | </a> | ||||
{% endif %} | {% endif %} | ||||
<h1>{{ post.title }}</h1> | <h1>{{ post.title }}</h1> | ||||
<p>{{ post.text|linebreaksbr }}</p> | <p>{{ post.text|linebreaksbr }}</p> | ||||
<p> | <p> | ||||
Tags: | |||||
Tags: | |||||
{% for tag in post.tags.all %} | {% for tag in post.tags.all %} | ||||
<a href="{% url 'blog_search_list_view' %}">{{ tag.name }} </a> | <a href="{% url 'blog_search_list_view' %}">{{ tag.name }} </a> | ||||
{% if not forloop.last %}, {% endif %} | |||||
{% if not forloop.last %}, {% endif %} | |||||
{% endfor %} | {% endfor %} | ||||
</p> | </p> | ||||
<p> | <p> |
{% extends 'base.html' %} | {% extends 'base.html' %} | ||||
{% block content %} | {% block content %} | ||||
<h1>New post</h1> | |||||
<h1>Artikel-Editor</h1> | |||||
<form method="POST" class="post-form">{% csrf_token %} | <form method="POST" class="post-form">{% csrf_token %} | ||||
{{ form.as_p }} | {{ form.as_p }} | ||||
<button type="submit" class="save btn btn-outline-dark">Save</button> | |||||
<button type="submit" class="save btn btn-outline-dark">Sichern</button> | |||||
</form> | </form> | ||||
{% endblock %} | {% endblock %} |
{% extends 'base.html' %} {% block content %} | {% extends 'base.html' %} {% block content %} | ||||
{% if tag %} Posts tagged with "{{ tag.name }}" {% endif %} | {% if tag %} Posts tagged with "{{ tag.name }}" {% endif %} | ||||
{% if messages %} | |||||
<div class="messages"> | |||||
{% for message in messages %} | |||||
<p {% if message.tags %} class="{{ message.tags }}" {% endif %}>{{ message }}</p> | |||||
{% endfor %} | |||||
</div> | |||||
{% endif %} | |||||
{% for post in posts %} | {% for post in posts %} | ||||
<div class="post"> | <div class="post"> | ||||
<div class="date"> | <div class="date"> |
@staff_member_required | @staff_member_required | ||||
def post_remove(request, pk): | def post_remove(request, pk): | ||||
post = get_object_or_404(Post, pk=pk) | post = get_object_or_404(Post, pk=pk) | ||||
messages.info(request, 'Der Artikel "' + post.title + '" wurde gelöscht') | |||||
post.delete() | post.delete() | ||||
return redirect('post_list') | return redirect('post_list') | ||||
\bibcite{Computer}{{Com18}{}{{}}{{}}} | \bibcite{Computer}{{Com18}{}{{}}{{}}} | ||||
\bibcite{Oracle}{{Coo10}{}{{}}{{}}} | \bibcite{Oracle}{{Coo10}{}{{}}{{}}} | ||||
\bibcite{Dixit}{{Dix18}{}{{}}{{}}} | \bibcite{Dixit}{{Dix18}{}{{}}{{}}} | ||||
\bibcite{Djangogirls}{{Dja18}{}{{}}{{}}} | |||||
\bibcite{Schlede}{{FMS17}{}{{}}{{}}} | \bibcite{Schlede}{{FMS17}{}{{}}{{}}} | ||||
\bibcite{Django}{{Fou18a}{}{{}}{{}}} | \bibcite{Django}{{Fou18a}{}{{}}{{}}} | ||||
\bibcite{Python}{{Fou18b}{}{{}}{{}}} | |||||
\bibcite{Django-2}{{Fou18b}{}{{}}{{}}} | |||||
\bibcite{Python}{{Fou18c}{}{{}}{{}}} | |||||
\bibcite{Gaynor}{{Gay10}{}{{}}{{}}} | \bibcite{Gaynor}{{Gay10}{}{{}}{{}}} | ||||
\bibcite{Herzog}{{Her16}{}{{}}{{}}} | \bibcite{Herzog}{{Her16}{}{{}}{{}}} | ||||
\@writefile{toc}{\contentsline {chapter}{Referenzen}{23}{chapter*.15}} | |||||
\bibcite{King}{{Kin17}{}{{}}{{}}} | \bibcite{King}{{Kin17}{}{{}}{{}}} | ||||
\bibcite{Leipner}{{Lei13}{}{{}}{{}}} | \bibcite{Leipner}{{Lei13}{}{{}}{{}}} | ||||
\@writefile{toc}{\contentsline {chapter}{Referenzen}{22}{chapter*.15}} | |||||
\bibcite{Microsoft}{{Mic18}{}{{}}{{}}} | \bibcite{Microsoft}{{Mic18}{}{{}}{{}}} | ||||
\bibcite{Ndukwe}{{Ndu17}{}{{}}{{}}} | \bibcite{Ndukwe}{{Ndu17}{}{{}}{{}}} | ||||
\bibcite{Ong}{{Ong18}{}{{}}{{}}} | \bibcite{Ong}{{Ong18}{}{{}}{{}}} | ||||
\bibcite{Otto}{{Ott11}{}{{}}{{}}} | \bibcite{Otto}{{Ott11}{}{{}}{{}}} | ||||
\bibcite{Otto-2}{{Ott12}{}{{}}{{}}} | |||||
\bibcite{Shabda}{{Sha09}{}{{}}{{}}} | \bibcite{Shabda}{{Sha09}{}{{}}{{}}} | ||||
\bibcite{Shelest}{{She09}{}{{}}{{}}} | \bibcite{Shelest}{{She09}{}{{}}{{}}} | ||||
\bibcite{Solutions}{{Sol17}{}{{}}{{}}} | \bibcite{Solutions}{{Sol17}{}{{}}{{}}} |
\newblock | \newblock | ||||
https://www.datacamp.com/community/tutorials/pep8-tutorial-python-code. | https://www.datacamp.com/community/tutorials/pep8-tutorial-python-code. | ||||
\bibitem[Dja18]{Djangogirls} | |||||
Djangogirls. | |||||
\newblock Creating a blog post model. | |||||
\newblock 2018. | |||||
\newblock https://tutorial.djangogirls.org/en/django\_models/. | |||||
\bibitem[FMS17]{Schlede} | \bibitem[FMS17]{Schlede} | ||||
Andreas~Donner Frank-Michael~Schlede, Thomas~Bär. | Andreas~Donner Frank-Michael~Schlede, Thomas~Bär. | ||||
\newblock Was ist ldap (lightweight directory access protocol)? | \newblock Was ist ldap (lightweight directory access protocol)? | ||||
\newblock 2018. | \newblock 2018. | ||||
\newblock https://docs.djangoproject.com/en/2.1/ref/contrib/auth/. | \newblock https://docs.djangoproject.com/en/2.1/ref/contrib/auth/. | ||||
\bibitem[Fou18b]{Python} | |||||
\bibitem[Fou18b]{Django-2} | |||||
Django~Software Foundation. | |||||
\newblock Modelforms - the save() methode. | |||||
\newblock 2018. | |||||
\newblock | |||||
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/\#the-save-method. | |||||
\bibitem[Fou18c]{Python} | |||||
Python~Software Foundation. | Python~Software Foundation. | ||||
\newblock Virtual environments and packages. | \newblock Virtual environments and packages. | ||||
\newblock 2018. | \newblock 2018. | ||||
\newblock | \newblock | ||||
https://blog.twitter.com/developer/en\_us/a/2011/bootstrap-twitter.html. | https://blog.twitter.com/developer/en\_us/a/2011/bootstrap-twitter.html. | ||||
\bibitem[Ott12]{Otto-2} | |||||
Mark Otto. | |||||
\newblock Say hello to bootstrap 2.0. | |||||
\newblock 2012. | |||||
\newblock | |||||
https://web.archive.org/web/20120203191214/https://dev.twitter.com/blog/say-hello-to-bootstrap-2. | |||||
\bibitem[Sha09]{Shabda} | \bibitem[Sha09]{Shabda} | ||||
Shabda. | Shabda. | ||||
\newblock Understanding decorators. | \newblock Understanding decorators. |
: @article{Ong | : @article{Ong | ||||
: , | : , | ||||
I'm skipping whatever remains of this entry | I'm skipping whatever remains of this entry | ||||
Repeated entry---line 127 of file ../references/References_2.bib | |||||
: @article{Otto | |||||
: , | |||||
I'm skipping whatever remains of this entry | |||||
Repeated entry---line 141 of file ../references/References_2.bib | |||||
: @article{Django | |||||
: , | |||||
I'm skipping whatever remains of this entry | |||||
Warning--empty journal in Bootstrap | Warning--empty journal in Bootstrap | ||||
Warning--empty journal in Computer | Warning--empty journal in Computer | ||||
Warning--empty journal in Oracle | Warning--empty journal in Oracle | ||||
Warning--empty journal in Dixit | Warning--empty journal in Dixit | ||||
Warning--empty journal in Djangogirls | |||||
Warning--empty journal in Schlede | Warning--empty journal in Schlede | ||||
Warning--empty journal in Django | Warning--empty journal in Django | ||||
Warning--empty journal in Django-2 | |||||
Warning--empty journal in Python | Warning--empty journal in Python | ||||
Warning--empty journal in Gaynor | Warning--empty journal in Gaynor | ||||
Warning--empty journal in Herzog | Warning--empty journal in Herzog | ||||
Warning--empty journal in Ndukwe | Warning--empty journal in Ndukwe | ||||
Warning--empty journal in Ong | Warning--empty journal in Ong | ||||
Warning--empty journal in Otto | Warning--empty journal in Otto | ||||
Warning--empty journal in Otto-2 | |||||
Warning--empty journal in Shabda | Warning--empty journal in Shabda | ||||
Warning--empty journal in Shelest | Warning--empty journal in Shelest | ||||
Warning--empty journal in Solutions | Warning--empty journal in Solutions | ||||
Warning--empty journal in Timm | Warning--empty journal in Timm | ||||
Warning--empty publisher in Weigend | Warning--empty publisher in Weigend | ||||
You've used 20 entries, | |||||
You've used 23 entries, | |||||
2543 wiz_defined-function locations, | 2543 wiz_defined-function locations, | ||||
671 strings with 7567 characters, | |||||
and the built_in function-call counts, 5457 in all, are: | |||||
= -- 537 | |||||
> -- 160 | |||||
< -- 20 | |||||
+ -- 41 | |||||
- -- 40 | |||||
* -- 264 | |||||
:= -- 959 | |||||
add.period$ -- 80 | |||||
call.type$ -- 20 | |||||
change.case$ -- 99 | |||||
chr.to.int$ -- 19 | |||||
cite$ -- 40 | |||||
duplicate$ -- 282 | |||||
empty$ -- 406 | |||||
format.name$ -- 78 | |||||
if$ -- 1065 | |||||
int.to.chr$ -- 2 | |||||
684 strings with 7930 characters, | |||||
and the built_in function-call counts, 6272 in all, are: | |||||
= -- 618 | |||||
> -- 184 | |||||
< -- 23 | |||||
+ -- 48 | |||||
- -- 46 | |||||
* -- 303 | |||||
:= -- 1101 | |||||
add.period$ -- 92 | |||||
call.type$ -- 23 | |||||
change.case$ -- 114 | |||||
chr.to.int$ -- 21 | |||||
cite$ -- 46 | |||||
duplicate$ -- 324 | |||||
empty$ -- 466 | |||||
format.name$ -- 90 | |||||
if$ -- 1224 | |||||
int.to.chr$ -- 3 | |||||
int.to.str$ -- 0 | int.to.str$ -- 0 | ||||
missing$ -- 21 | |||||
newline$ -- 123 | |||||
num.names$ -- 60 | |||||
pop$ -- 121 | |||||
missing$ -- 24 | |||||
newline$ -- 141 | |||||
num.names$ -- 69 | |||||
pop$ -- 139 | |||||
preamble$ -- 1 | preamble$ -- 1 | ||||
purify$ -- 120 | |||||
purify$ -- 138 | |||||
quote$ -- 0 | quote$ -- 0 | ||||
skip$ -- 217 | |||||
skip$ -- 249 | |||||
stack$ -- 0 | stack$ -- 0 | ||||
substring$ -- 140 | |||||
substring$ -- 161 | |||||
swap$ -- 1 | swap$ -- 1 | ||||
text.length$ -- 20 | |||||
text.prefix$ -- 18 | |||||
text.length$ -- 23 | |||||
text.prefix$ -- 21 | |||||
top$ -- 0 | top$ -- 0 | ||||
type$ -- 156 | |||||
warning$ -- 20 | |||||
while$ -- 40 | |||||
width$ -- 25 | |||||
write$ -- 262 | |||||
(There were 3 error messages) | |||||
type$ -- 180 | |||||
warning$ -- 23 | |||||
while$ -- 46 | |||||
width$ -- 29 | |||||
write$ -- 301 | |||||
(There was 1 error message) |
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=xelatex 2018.6.7) 11 NOV 2018 23:26 | |||||
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=xelatex 2018.6.7) 12 NOV 2018 19:00 | |||||
entering extended mode | entering extended mode | ||||
\write18 enabled. | \write18 enabled. | ||||
file:line:error style messages enabled. | file:line:error style messages enabled. | ||||
(babel) in language on input line 117. | (babel) in language on input line 117. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 117. | (babel) in language on input line 117. | ||||
Underfull \hbox (badness 10000) in paragraph at lines 118--122 | |||||
[] | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 124. | |||||
(babel) in language on input line 127. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 124. | |||||
(babel) in language on input line 127. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 124. | |||||
(babel) in language on input line 127. | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 124. | |||||
(babel) in language on input line 127. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 124. | |||||
(babel) in language on input line 127. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 124. | |||||
[18] | |||||
(babel) in language on input line 127. | |||||
[18] | |||||
Underfull \hbox (badness 10000) in paragraph at lines 128--132 | |||||
[] | |||||
Underfull \hbox (badness 10000) in paragraph at lines 133--137 | |||||
[] | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 126. | |||||
(babel) in language on input line 141. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 126. | |||||
(babel) in language on input line 141. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 126. | |||||
(babel) in language on input line 141. | |||||
Overfull \hbox (1.12642pt too wide) in paragraph at lines 127--128 | |||||
Overfull \hbox (1.12642pt too wide) in paragraph at lines 142--143 | |||||
\T1/aer/m/n/12 Tags als ein-ge-logg-ter User abon-nie-ren und ver-wal-ten Front-end und Admin-Backend? | \T1/aer/m/n/12 Tags als ein-ge-logg-ter User abon-nie-ren und ver-wal-ten Front-end und Admin-Backend? | ||||
[] | [] | ||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 129. | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 129. | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 129. | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 144. | |||||
[19] | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 144. | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 132. | |||||
(babel) in language on input line 147. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 132. | |||||
(babel) in language on input line 147. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 132. | |||||
(babel) in language on input line 147. | |||||
) | ) | ||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 59. | (babel) in language on input line 59. | ||||
(babel) in language on input line 59. | (babel) in language on input line 59. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 59. | (babel) in language on input line 59. | ||||
[19] | |||||
[20] | |||||
\openout2 = `chapters/ergebnis.aux'. | \openout2 = `chapters/ergebnis.aux'. | ||||
(./chapters/ergebnis.tex | (./chapters/ergebnis.tex | ||||
(babel) in language on input line 60. | (babel) in language on input line 60. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 60. | (babel) in language on input line 60. | ||||
[20 | |||||
[21 | |||||
(babel) in language on input line 62. | (babel) in language on input line 62. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 62. | (babel) in language on input line 62. | ||||
[21 | |||||
[22 | |||||
\T1/aer/m/n/12 https://www.datacamp.com/community/tutorials/pep8-tutorial-python- | \T1/aer/m/n/12 https://www.datacamp.com/community/tutorials/pep8-tutorial-python- | ||||
[] | [] | ||||
Missing character: There is no ’ in font aer12! | |||||
Underfull \hbox (badness 2717) in paragraph at lines 62--67 | |||||
[]\T1/aer/m/n/12 Adam King. Djan-go midd-le-wa-res and the re-quest/-re-spon-se cy- | |||||
Underfull \hbox (badness 10000) in paragraph at lines 29--33 | |||||
[]\T1/aer/m/n/12 Djangogirls. Crea-ting a blog post mo-del. 2018. | |||||
[] | [] | ||||
Missing character: There is no ̈ in font aer12! | |||||
Missing character: There is no ̈ in font aer12! | |||||
Missing character: There is no ̈ in font aer12! | |||||
Underfull \hbox (badness 10000) in paragraph at lines 48--53 | |||||
\T1/aer/m/n/12 https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the- | |||||
[] | |||||
Missing character: There is no ’ in font aer12! | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 75. | |||||
(babel) in language on input line 74. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 75. | |||||
(babel) in language on input line 74. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 75. | |||||
(babel) in language on input line 74. | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 75. | |||||
(babel) in language on input line 74. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 75. | |||||
(babel) in language on input line 74. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 75. | |||||
[22 | |||||
(babel) in language on input line 74. | |||||
[23 | |||||
] | ] | ||||
Underfull \hbox (badness 2717) in paragraph at lines 75--80 | |||||
[]\T1/aer/m/n/12 Adam King. Djan-go midd-le-wa-res and the re-quest/-re-spon-se cy- | |||||
[] | |||||
Missing character: There is no ̈ in font aer12! | |||||
Missing character: There is no ̈ in font aer12! | |||||
Missing character: There is no ̈ in font aer12! | |||||
Missing character: There is no ’ in font aer12! | Missing character: There is no ’ in font aer12! | ||||
Underfull \hbox (badness 10000) in paragraph at lines 83--89 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 96--102 | |||||
\T1/aer/m/n/12 medium-com-nnennandukwe-python-is-the-back-end-programming- | \T1/aer/m/n/12 medium-com-nnennandukwe-python-is-the-back-end-programming- | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 91--95 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 104--108 | |||||
[]\T1/aer/m/n/12 Selwin Ong. django-post_office git re-po-si-to-ry. 2018. | []\T1/aer/m/n/12 Selwin Ong. django-post_office git re-po-si-to-ry. 2018. | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 97--102 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 110--115 | |||||
[]\T1/aer/m/n/12 Mark Ot-to. Boot-strap from twit-ter. 2011. | []\T1/aer/m/n/12 Mark Ot-to. Boot-strap from twit-ter. 2011. | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 97--102 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 110--115 | |||||
\T1/aer/m/n/12 https://blog.twitter.com/developer/en_us/a/2011/bootstrap- | \T1/aer/m/n/12 https://blog.twitter.com/developer/en_us/a/2011/bootstrap- | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 104--108 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 117--122 | |||||
[]\T1/aer/m/n/12 Mark Ot-to. Say hel-lo to boot-strap 2.0. 2012. | |||||
[] | |||||
Overfull \hbox (38.1438pt too wide) in paragraph at lines 117--122 | |||||
\T1/aer/m/n/12 https://web.archive.org/web/20120203191214/https://dev.twitter.com/blog/say- | |||||
[] | |||||
Underfull \hbox (badness 10000) in paragraph at lines 124--128 | |||||
[]\T1/aer/m/n/12 Shabda. Un-der-stan-ding de-co-ra-tors. 2009. | []\T1/aer/m/n/12 Shabda. Un-der-stan-ding de-co-ra-tors. 2009. | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 110--116 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 130--136 | |||||
[]\T1/aer/m/n/12 Alexy She-lest. Mo-del view con-trol-ler, mo-del view pre- | []\T1/aer/m/n/12 Alexy She-lest. Mo-del view con-trol-ler, mo-del view pre- | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 110--116 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 130--136 | |||||
\T1/aer/m/n/12 sen-ter, and mo-del view view-mo-del de-sign pat-terns. 2009. | \T1/aer/m/n/12 sen-ter, and mo-del view view-mo-del de-sign pat-terns. 2009. | ||||
[] | [] | ||||
Underfull \hbox (badness 10000) in paragraph at lines 110--116 | |||||
Underfull \hbox (badness 10000) in paragraph at lines 130--136 | |||||
\T1/aer/m/n/12 https://www.codeproject.com/Articles/42830/Model-View-Controller- | \T1/aer/m/n/12 https://www.codeproject.com/Articles/42830/Model-View-Controller- | ||||
[] | [] | ||||
) | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 149. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 149. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 149. | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 149. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 149. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 149. | |||||
[24]) | |||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 77. | Package atveryend Info: Empty hook `BeforeClearDocument' on input line 77. | ||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 77. | (babel) in language on input line 77. | ||||
(babel) in language on input line 77. | (babel) in language on input line 77. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 77. | (babel) in language on input line 77. | ||||
[23] | |||||
[25] | |||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 77. | Package atveryend Info: Empty hook `AfterLastShipout' on input line 77. | ||||
(/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.aux (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/titlepage/titlepage.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/abstract/abstract.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/einleitung.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/framework.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/prototyp.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ergebnis.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ausblick.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/fazit.aux)) | (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.aux (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/titlepage/titlepage.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/abstract/abstract.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/einleitung.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/framework.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/prototyp.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ergebnis.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ausblick.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/fazit.aux)) | ||||
Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 77. | Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 77. | ||||
) | ) | ||||
(\end occurred when \ifnum on line 5 was incomplete) | (\end occurred when \ifnum on line 5 was incomplete) | ||||
Here is how much of TeX's memory you used: | Here is how much of TeX's memory you used: | ||||
26616 strings out of 492970 | |||||
477449 string characters out of 6133939 | |||||
547177 words of memory out of 5000000 | |||||
30225 multiletter control sequences out of 15000+600000 | |||||
26626 strings out of 492970 | |||||
477603 string characters out of 6133939 | |||||
547235 words of memory out of 5000000 | |||||
30235 multiletter control sequences out of 15000+600000 | |||||
555998 words of font info for 62 fonts, out of 8000000 for 9000 | 555998 words of font info for 62 fonts, out of 8000000 for 9000 | ||||
1348 hyphenation exceptions out of 8191 | 1348 hyphenation exceptions out of 8191 | ||||
58i,12n,50p,10437b,958s stack positions out of 5000i,500n,10000p,200000b,80000s | 58i,12n,50p,10437b,958s stack positions out of 5000i,500n,10000p,200000b,80000s | ||||
Output written on /Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.pdf (28 pages). | |||||
Output written on /Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.pdf (30 pages). |
\contentsline {subsection}{\numberline {3.2.3}Berechtigung der User}{17}{subsection.3.2.3} | \contentsline {subsection}{\numberline {3.2.3}Berechtigung der User}{17}{subsection.3.2.3} | ||||
\contentsline {section}{\numberline {3.3}Funktionen}{18}{section.3.3} | \contentsline {section}{\numberline {3.3}Funktionen}{18}{section.3.3} | ||||
\contentsline {subsection}{\numberline {3.3.1}Verwalten}{18}{subsection.3.3.1} | \contentsline {subsection}{\numberline {3.3.1}Verwalten}{18}{subsection.3.3.1} | ||||
\contentsline {subsection}{\numberline {3.3.2}Abonnieren}{19}{subsection.3.3.2} | |||||
\contentsline {subsection}{\numberline {3.3.3}Filtern}{19}{subsection.3.3.3} | |||||
\contentsline {subsection}{\numberline {3.3.4}Benachrichtigung}{19}{subsection.3.3.4} | |||||
\contentsline {chapter}{\numberline {4}Ergebnis}{20}{chapter.4} | |||||
\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{20}{subsection.4.0.1} | |||||
\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{21}{chapter.5} | |||||
\contentsline {chapter}{Referenzen}{22}{chapter*.15} | |||||
\contentsline {subsection}{\numberline {3.3.2}Abonnieren}{20}{subsection.3.3.2} | |||||
\contentsline {subsection}{\numberline {3.3.3}Filtern}{20}{subsection.3.3.3} | |||||
\contentsline {subsection}{\numberline {3.3.4}Benachrichtigung}{20}{subsection.3.3.4} | |||||
\contentsline {chapter}{\numberline {4}Ergebnis}{21}{chapter.4} | |||||
\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{21}{subsection.4.0.1} | |||||
\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{22}{chapter.5} | |||||
\contentsline {chapter}{Referenzen}{23}{chapter*.15} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@setckpt{chapters/ausblick}{ | \@setckpt{chapters/ausblick}{ | ||||
\setcounter{page}{21} | |||||
\setcounter{page}{22} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Ergebnis}{20}{chapter.4}} | |||||
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Ergebnis}{21}{chapter.4}} | |||||
\@writefile{lof}{\addvspace {10\p@ }} | \@writefile{lof}{\addvspace {10\p@ }} | ||||
\@writefile{lot}{\addvspace {10\p@ }} | \@writefile{lot}{\addvspace {10\p@ }} | ||||
\newlabel{ch:ergebnis}{{4}{20}{Ergebnis}{chapter.4}{}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{20}{subsection.4.0.1}} | |||||
\newlabel{ch:ergebnis}{{4}{21}{Ergebnis}{chapter.4}{}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{21}{subsection.4.0.1}} | |||||
\@setckpt{chapters/ergebnis}{ | \@setckpt{chapters/ergebnis}{ | ||||
\setcounter{page}{21} | |||||
\setcounter{page}{22} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{21}{chapter.5}} | |||||
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{22}{chapter.5}} | |||||
\@writefile{lof}{\addvspace {10\p@ }} | \@writefile{lof}{\addvspace {10\p@ }} | ||||
\@writefile{lot}{\addvspace {10\p@ }} | \@writefile{lot}{\addvspace {10\p@ }} | ||||
\newlabel{ch:zusammenfassung}{{5}{21}{Zusammenfassung und Ausblick}{chapter.5}{}} | |||||
\newlabel{ch:zusammenfassung}{{5}{22}{Zusammenfassung und Ausblick}{chapter.5}{}} | |||||
\@setckpt{chapters/fazit}{ | \@setckpt{chapters/fazit}{ | ||||
\setcounter{page}{22} | |||||
\setcounter{page}{23} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} |
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Funktionen}{18}{section.3.3}} | \@writefile{toc}{\contentsline {section}{\numberline {3.3}Funktionen}{18}{section.3.3}} | ||||
\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces User Stories\relax }}{18}{figure.caption.14}} | \@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces User Stories\relax }}{18}{figure.caption.14}} | ||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Verwalten}{18}{subsection.3.3.1}} | \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Verwalten}{18}{subsection.3.3.1}} | ||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Abonnieren}{19}{subsection.3.3.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}Filtern}{19}{subsection.3.3.3}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.4}Benachrichtigung}{19}{subsection.3.3.4}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Abonnieren}{20}{subsection.3.3.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}Filtern}{20}{subsection.3.3.3}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.4}Benachrichtigung}{20}{subsection.3.3.4}} | |||||
\@setckpt{chapters/prototyp}{ | \@setckpt{chapters/prototyp}{ | ||||
\setcounter{page}{20} | |||||
\setcounter{page}{21} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} |
\end{figure} | \end{figure} | ||||
\subsection{Verwalten} | \subsection{Verwalten} | ||||
Das Verwalten der Artikel soll von berechtigten Nutzern hauptsächlich im Front-end stattfinden. Der Vorgang des Erstellens, des Löschens und des Editierens der einzelnen Einträge wird im Folgenden konkretisiert. | |||||
Das Verwalten der Artikel soll von berechtigten Nutzern im Front-end stattfinden, hingegen die prozessuale Logik im Code-Back-end passiert. Der Vorgang des Erstellens, des Löschens und des Editierens der einzelnen Einträge wird im Folgenden konkretisiert. | |||||
\\ | |||||
\\ | |||||
Einen neuen Artikel erstellen: | |||||
Das \glqq +\grqq\ in der Menüleiste leitet den Benutzer zu einer Unterseite. Hier können alle Felder befüllt werden, die im PostForm-Formular in der Datei forms.py festgelegt wurden. Dazu gehören der Titel und der Text, die als Pflichtfelder gelten. Das Feld \glqq Tags \grqq\ muss ebenfalls mindestens einen Wert enthalten um die Validierung der Eingaben sichern zu können. Eine Ausnahme bildet das Datum der Veröffentlichung. Bleibt das Feld leer so wird der Post automatisch der Liste der Entwürfe beigefügt. | |||||
Ein neuer Artikel wird erstellt. Das \glqq +\grqq\ in der Menüleiste leitet den Benutzer zu einer Unterseite. Hier können alle Felder befüllt werden, die im PostForm-Formular in der Datei forms.py festgelegt wurden. Dazu gehören der Titel und der Text, die als Pflichtfelder gelten. Das Feld \glqq Tags \grqq\ muss ebenfalls mindestens einen Wert enthalten um die Validierung der Eingaben sichern zu können. Eine Ausnahme bildet das Datum der Veröffentlichung. Bleibt das Feld leer so wird der Post automatisch der Liste der Entwürfe beigefügt. | |||||
Speichert der Benutzer nun den Artikel, so werden im Back-end die Daten wir folgt verarbeitet. In der View \glqq post\_new \grqq\ wird zunächst die Validität aller Eingaben geprüft. Falls dies der Fall ist, wird der Post als Objekt zurückgegeben, jedoch durch das optionale \textit{Keywort} \glqq commit=false \grqq\ noch nicht in der Datenbank abgelegt. Das ist notwendig um dem Objekt spezifische Informationen mitzugeben. In diesem Kontext wird der aktuell eingeloggte User als Autor hinterlegt. Jedoch birgt die Vorgehensweise eine Problematik im Speichervorgang einer \textit{ManyToMany} Relation zwischen zwei Modellen. Da Informationen nur auf ein bereits in der Datenbank bestehendes Objekt gesichert werden können ist dies zunächst nicht möglich (vgl. [Fou18b]). | |||||
Im Prototyp nutzt das \textit{PostModel} die \textit{ManyToMany} Konnektivität mit dem Modell des TaggabelManagers. Um die Eingabe des Tag-Felds trotzdem im neuen Artikel speichern zu können, wird zunächst das Objekt gespeichert, um nachdem explizit das von Django zur Verfügung gestellte \glqq form.save\_m2m() \grqq\ aufrufen zu können. Dieser Befehl zwingt die Daten der \textit{ManyToMany} Relation zu speichern. | |||||
Die eindeutige Zuordnung der Eingabe im Front-end zur Verarbeitung der Artikel im Back-end ist mit einem \textit{Primary Key} realisiert. Das \textit{PostModel} bekommt beim Anlegen keinen solchen Schlüssel zu einem Feld zugewiesen. Ist das der Fall, erstellt Django automatisiert beim Speichern der Tabelle diesen als \textit{AutoField} im Feld \glqq Id \grqq\ und zählt bei jedem neu Erstellen eines Objekts hoch. Somit sind alle Objekte eindeutig zuordenbar und können mit dem Kommando \glqq post.pk \grqq\ jederzeit aufgerufen werden. | |||||
\\ | |||||
\\ | |||||
Einen bereits vorhandenen Artikel löschen: | |||||
In der Detailansicht eines Artikels ist es möglich diesen durch klicken auf den Button \glqq Löschen \grqq\ zu entfernen. Die View \glqq post\_remove \grqq\ selektiert über den im Template mitgegebenen \textit{Primary Key} das Objekt und speichert dies in der Variable \glqq post\grqq\. Um dem Benutzer nochmals mitteilen zu können, welchen Artikel er entfernt hat, wird vor dem Löschen eine Nachricht mit dem Titel dessen generiert. Nachdem wird dieser gelöscht (post.remove()) und eine Umleitung am Ende der View-Definition schickt den Benutzer auf die Seite der Artikelliste. Hier wird die vorher erstellte Nachricht aus informellen Gründen eingebunden. | |||||
\\ | |||||
\\ | |||||
Einen bereits vorhandenen Artikel bearbeiten: | |||||
Die eindeutige Zuordnung der Eingabe im Front-end zur Verarbeitung der verschiedenen Artikel im Back-end ist mit einem \textit{Primary Key} realisiert. In der View \glqq post\_new \grqq\ wird zunächst die Validität aller Eingaben geprüft. Falls dies der Fall ist, wird der Post als Objekt zurückgegeben, jedoch durch das optionale \textit{Keywort} \glqq commit=false \grqq\ noch nicht in der Datenbank abgelegt. Das ist notwendig um dem Objekt spezifische Informationen mitzugeben. In diesem Kontext wird der aktuell eingeloggte User als Autor hinterlegt. Jedoch birgt die Vorgehensweise eine Problematik im Speichervorgang einer \textit{ManyToMany} Relation zwischen zwei Modellen. Da Informationen nur auf ein bereits in der Datenbank bestehendes Objekt gesichert werden können ist dies zunächst nicht möglich. | |||||
Im Prototyp nutzt das \textit{PostModel} die \textit{ManyToMany} Konnektivität mit dem Modell des TaggabelManagers. Um die Eingabe des Tag-Felds trotzdem im neuen Artikel speichern zu können, wird zunächst das Objekt gespeichert, um nachdem explizit das von Django zur Verfügung gestellte \glqq form.save\_m2m() \grqq\ aufrufen zu können. | |||||
--- pk erklären | |||||
Ähnlich wie beim Löschen eines Artikel, kann man diesen in der Detailansicht bearbeiten. Mit dem Betätigen des Bearbeiten-Buttons wird der User auf den Artikel-Editor weitergeleitet. | |||||
\subsection{Abonnieren} | \subsection{Abonnieren} |
note = "https://github.com/twbs/bootstrap" | note = "https://github.com/twbs/bootstrap" | ||||
} | } | ||||
@article{Otto, | |||||
@article{Otto-2, | |||||
author = "Mark Otto", | author = "Mark Otto", | ||||
title = "Say hello to Bootstrap 2.0", | title = "Say hello to Bootstrap 2.0", | ||||
year = "2012", | year = "2012", | ||||
note = "https://docs.djangoproject.com/en/2.1/ref/contrib/auth/" | note = "https://docs.djangoproject.com/en/2.1/ref/contrib/auth/" | ||||
} | } | ||||
@article{Django, | |||||
author = "Djangogirlsgirls", | |||||
@article{Djangogirls, | |||||
author = "Djangogirls", | |||||
title = "Creating a blog post model", | title = "Creating a blog post model", | ||||
year = "2018", | year = "2018", | ||||
note = "https://tutorial.djangogirls.org/en/django_models/" | |||||
note = "https://tutorial.djangogirls.org/en/django\_models/" | |||||
} | } | ||||
@article{Microsoft, | @article{Microsoft, | ||||
note = "https://www.pcmag.com/encyclopedia/term/58231/user-permissions" | note = "https://www.pcmag.com/encyclopedia/term/58231/user-permissions" | ||||
} | } | ||||
@article{Django-2, | |||||
author = "Django Software Foundation", | |||||
title = "Modelforms - The save() methode", | |||||
year = "2018", | |||||
note = "https://docs.djangoproject.com/en/dev/topics/forms/modelforms/\#the-save-method" | |||||
} | |||||