Skip to content

Commit 90630d3

Browse files
committed
Restructure loop in template
Before this change, we rendered the beginning and end of these lists as we iterated through the list. This replaces the checks for first- and list- iterations with a single if-statement, making the template simpler.
1 parent be7bb48 commit 90630d3

5 files changed

Lines changed: 238 additions & 292 deletions

File tree

cbv/templates/cbv/klass_detail.html

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -66,30 +66,32 @@ <h1><small>class</small>&nbsp;{{ klass.name }}</h1>
6666
{% block content %}
6767
<div class="span12">
6868
<div class="row">
69-
{% for ancestor in all_ancestors %}
70-
{% if forloop.first %}
71-
<div class="span4">
69+
{% if all_ancestors %}
70+
<div class="span4">
7271
<h2>Ancestors (<abbr title="Method Resolution Order">MRO</abbr>)</h2>
7372
<ol start='0' id="ancestors">
74-
<li><strong>{{ klass.name }}</strong></li>
75-
{% endif %}
76-
<li>
77-
<a href="{{ ancestor.get_absolute_url }}" class="{% if ancestor in direct_ancestors %}direct{% endif %}">
78-
{{ ancestor.name }}
79-
</a>
80-
</li>
81-
{% if forloop.last %}</ol></div>{% endif %}
82-
{% endfor %}
73+
<li><strong>{{ klass.name }}</strong></li>
74+
{% for ancestor in all_ancestors %}
75+
<li>
76+
<a href="{{ ancestor.get_absolute_url }}" class="{% if ancestor in direct_ancestors %}direct{% endif %}">
77+
{{ ancestor.name }}
78+
</a>
79+
</li>
80+
{% endfor %}
81+
</ol>
82+
</div>
83+
{% endif %}
8384

84-
{% for child in all_children %}
85-
{% if forloop.first %}
85+
{% if all_children %}
8686
<div id="descendants" class="span{% if direct_ancestors %}8{% else %}12{% endif %}">
87-
<h2>Descendants</h2>
88-
<ul class="unstyled">
89-
{% endif %}
90-
<li><a href="{{ child.get_absolute_url }}">{{ child.name }}</a></li>
91-
{% if forloop.last %}</ul></div>{% endif %}
92-
{% endfor %}
87+
<h2>Descendants</h2>
88+
<ul class="unstyled">
89+
{% for child in all_children %}
90+
<li><a href="{{ child.get_absolute_url }}">{{ child.name }}</a></li>
91+
{% endfor %}
92+
</ul>
93+
</div>
94+
{% endif %}
9395
</div>
9496

9597
<div class="row">

tests/_page_snapshots/fuzzy-klass-detail-old.html

Lines changed: 54 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -408,80 +408,66 @@ <h1><small>class</small>&nbsp;FormView</h1>
408408
<div class="span12">
409409
<div class="row">
410410

411-
412-
<div class="span4">
411+
<div class="span4">
413412
<h2>Ancestors (<abbr title="Method Resolution Order">MRO</abbr>)</h2>
414413
<ol start='0' id="ancestors">
415-
<li><strong>FormView</strong></li>
416-
417-
<li>
418-
<a href="/projects/Django/3.2/django.views.generic.base/TemplateResponseMixin/" class="direct">
419-
TemplateResponseMixin
420-
</a>
421-
</li>
422-
423-
424-
425-
<li>
426-
<a href="/projects/Django/3.2/django.views.generic.edit/BaseFormView/" class="direct">
427-
BaseFormView
428-
</a>
429-
</li>
430-
431-
432-
433-
<li>
434-
<a href="/projects/Django/3.2/django.views.generic.edit/FormMixin/" class="">
435-
FormMixin
436-
</a>
437-
</li>
438-
439-
440-
441-
<li>
442-
<a href="/projects/Django/3.2/django.views.generic.base/ContextMixin/" class="">
443-
ContextMixin
444-
</a>
445-
</li>
446-
447-
448-
449-
<li>
450-
<a href="/projects/Django/3.2/django.views.generic.edit/ProcessFormView/" class="">
451-
ProcessFormView
452-
</a>
453-
</li>
454-
455-
456-
457-
<li>
458-
<a href="/projects/Django/3.2/django.views.generic.base/View/" class="">
459-
View
460-
</a>
461-
</li>
462-
</ol></div>
414+
<li><strong>FormView</strong></li>
415+
416+
<li>
417+
<a href="/projects/Django/3.2/django.views.generic.base/TemplateResponseMixin/" class="direct">
418+
TemplateResponseMixin
419+
</a>
420+
</li>
421+
422+
<li>
423+
<a href="/projects/Django/3.2/django.views.generic.edit/BaseFormView/" class="direct">
424+
BaseFormView
425+
</a>
426+
</li>
427+
428+
<li>
429+
<a href="/projects/Django/3.2/django.views.generic.edit/FormMixin/" class="">
430+
FormMixin
431+
</a>
432+
</li>
433+
434+
<li>
435+
<a href="/projects/Django/3.2/django.views.generic.base/ContextMixin/" class="">
436+
ContextMixin
437+
</a>
438+
</li>
439+
440+
<li>
441+
<a href="/projects/Django/3.2/django.views.generic.edit/ProcessFormView/" class="">
442+
ProcessFormView
443+
</a>
444+
</li>
445+
446+
<li>
447+
<a href="/projects/Django/3.2/django.views.generic.base/View/" class="">
448+
View
449+
</a>
450+
</li>
451+
452+
</ol>
453+
</div>
463454

464455

465456

466-
467457
<div id="descendants" class="span8">
468-
<h2>Descendants</h2>
469-
<ul class="unstyled">
470-
471-
<li><a href="/projects/Django/3.2/django.contrib.auth.views/LoginView/">LoginView</a></li>
472-
473-
474-
475-
<li><a href="/projects/Django/3.2/django.contrib.auth.views/PasswordChangeView/">PasswordChangeView</a></li>
476-
477-
478-
479-
<li><a href="/projects/Django/3.2/django.contrib.auth.views/PasswordResetConfirmView/">PasswordResetConfirmView</a></li>
480-
481-
482-
483-
<li><a href="/projects/Django/3.2/django.contrib.auth.views/PasswordResetView/">PasswordResetView</a></li>
484-
</ul></div>
458+
<h2>Descendants</h2>
459+
<ul class="unstyled">
460+
461+
<li><a href="/projects/Django/3.2/django.contrib.auth.views/LoginView/">LoginView</a></li>
462+
463+
<li><a href="/projects/Django/3.2/django.contrib.auth.views/PasswordChangeView/">PasswordChangeView</a></li>
464+
465+
<li><a href="/projects/Django/3.2/django.contrib.auth.views/PasswordResetConfirmView/">PasswordResetConfirmView</a></li>
466+
467+
<li><a href="/projects/Django/3.2/django.contrib.auth.views/PasswordResetView/">PasswordResetView</a></li>
468+
469+
</ul>
470+
</div>
485471

486472
</div>
487473

tests/_page_snapshots/fuzzy-klass-detail.html

Lines changed: 54 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -408,80 +408,66 @@ <h1><small>class</small>&nbsp;FormView</h1>
408408
<div class="span12">
409409
<div class="row">
410410

411-
412-
<div class="span4">
411+
<div class="span4">
413412
<h2>Ancestors (<abbr title="Method Resolution Order">MRO</abbr>)</h2>
414413
<ol start='0' id="ancestors">
415-
<li><strong>FormView</strong></li>
416-
417-
<li>
418-
<a href="/projects/Django/4.0/django.views.generic.base/TemplateResponseMixin/" class="direct">
419-
TemplateResponseMixin
420-
</a>
421-
</li>
422-
423-
424-
425-
<li>
426-
<a href="/projects/Django/4.0/django.views.generic.edit/BaseFormView/" class="direct">
427-
BaseFormView
428-
</a>
429-
</li>
430-
431-
432-
433-
<li>
434-
<a href="/projects/Django/4.0/django.views.generic.edit/FormMixin/" class="">
435-
FormMixin
436-
</a>
437-
</li>
438-
439-
440-
441-
<li>
442-
<a href="/projects/Django/4.0/django.views.generic.base/ContextMixin/" class="">
443-
ContextMixin
444-
</a>
445-
</li>
446-
447-
448-
449-
<li>
450-
<a href="/projects/Django/4.0/django.views.generic.edit/ProcessFormView/" class="">
451-
ProcessFormView
452-
</a>
453-
</li>
454-
455-
456-
457-
<li>
458-
<a href="/projects/Django/4.0/django.views.generic.base/View/" class="">
459-
View
460-
</a>
461-
</li>
462-
</ol></div>
414+
<li><strong>FormView</strong></li>
415+
416+
<li>
417+
<a href="/projects/Django/4.0/django.views.generic.base/TemplateResponseMixin/" class="direct">
418+
TemplateResponseMixin
419+
</a>
420+
</li>
421+
422+
<li>
423+
<a href="/projects/Django/4.0/django.views.generic.edit/BaseFormView/" class="direct">
424+
BaseFormView
425+
</a>
426+
</li>
427+
428+
<li>
429+
<a href="/projects/Django/4.0/django.views.generic.edit/FormMixin/" class="">
430+
FormMixin
431+
</a>
432+
</li>
433+
434+
<li>
435+
<a href="/projects/Django/4.0/django.views.generic.base/ContextMixin/" class="">
436+
ContextMixin
437+
</a>
438+
</li>
439+
440+
<li>
441+
<a href="/projects/Django/4.0/django.views.generic.edit/ProcessFormView/" class="">
442+
ProcessFormView
443+
</a>
444+
</li>
445+
446+
<li>
447+
<a href="/projects/Django/4.0/django.views.generic.base/View/" class="">
448+
View
449+
</a>
450+
</li>
451+
452+
</ol>
453+
</div>
463454

464455

465456

466-
467457
<div id="descendants" class="span8">
468-
<h2>Descendants</h2>
469-
<ul class="unstyled">
470-
471-
<li><a href="/projects/Django/4.0/django.contrib.auth.views/LoginView/">LoginView</a></li>
472-
473-
474-
475-
<li><a href="/projects/Django/4.0/django.contrib.auth.views/PasswordChangeView/">PasswordChangeView</a></li>
476-
477-
478-
479-
<li><a href="/projects/Django/4.0/django.contrib.auth.views/PasswordResetConfirmView/">PasswordResetConfirmView</a></li>
480-
481-
482-
483-
<li><a href="/projects/Django/4.0/django.contrib.auth.views/PasswordResetView/">PasswordResetView</a></li>
484-
</ul></div>
458+
<h2>Descendants</h2>
459+
<ul class="unstyled">
460+
461+
<li><a href="/projects/Django/4.0/django.contrib.auth.views/LoginView/">LoginView</a></li>
462+
463+
<li><a href="/projects/Django/4.0/django.contrib.auth.views/PasswordChangeView/">PasswordChangeView</a></li>
464+
465+
<li><a href="/projects/Django/4.0/django.contrib.auth.views/PasswordResetConfirmView/">PasswordResetConfirmView</a></li>
466+
467+
<li><a href="/projects/Django/4.0/django.contrib.auth.views/PasswordResetView/">PasswordResetView</a></li>
468+
469+
</ul>
470+
</div>
485471

486472
</div>
487473

0 commit comments

Comments
 (0)