Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich benutzerdefinierte Vorlagen -Tags in Django?
Django模板标签:简化数据显示,提升代码复用性
在Django开发中,模板用于将数据动态渲染到HTML页面。本文将介绍如何使用Django模板标签来简化数据显示逻辑,避免在视图中重复编写代码。
假设你有一个简单的课程列表HTML模板:
对应的视图代码如下:
视图将课程数据传递给模板,最终在网页上显示如下:
Frage: Zeigen Sie die Gesamtzahl der Kurse
Nehmen wir nun an, Sie müssen den Gesamtkurs auf der Webseite anzeigen. Eine Methode besteht darin, der Ansicht Berechnungslogik hinzuzufügen:Wenn Ihre Website jedoch über mehrere Seiten verfügt (z. B. Blog -Seite, Autorenseite, Dozentseite), muss die Gesamtzahl der Kurse angezeigt werden, und diese Logik benötigt Essenz Zu dieser Zeit war das Django -Vorlagenetikett nützlich.
<code class="language-python">def course_list(request): total_courses = Course.objects.count() return render(request, 'courses.html', {'courses': courses, 'total_courses': total_courses})</code>Was ist eine Vorlagenetika?
Kurz gesagt, das Django -Vorlagenetikett ist eine spezielle Beschriftung, mit der Sie eine benutzerdefinierte Funktion im Django -Vorlagensystem hinzufügen können. Es kann die Wiederverwendung des Codes verbessern und vermeiden, wiederholt dieselbe Logik in der Ansicht zu schreiben.
Angenommen, Ihre Lehrplananwendung muss die folgenden Daten anzeigen:
verfügbare Kurse
Erstellen Sie den Ordner templatetags:
templatetags
<code> courses/ ├── templatetags/ ├── __init__.py └── course_tags.py</code>Schritt 2: Laden und verwenden Sie die Vorlagenbezeichnung in der Vorlage
course_tags.py
<code class="language-python">from django import template from courses.models import Course register = template.Library() @register.simple_tag def total_courses(): return Course.objects.count() @register.simple_tag def available_courses(): return Course.objects.filter(is_available=True).count() @register.simple_tag def enrolled_students(course_id): course = Course.objects.get(id=course_id) return course.enrolled_students.count()</code>
Diese Vorlage wird angezeigt:
Gesamtkursnummer
course_list.html
verfügbare Kurse
<code class="language-html">{% load course_tags %} <h1>所有课程</h1> <p>总课程数:{% total_courses %}</p> <p>可用课程数:{% available_courses %}</p> {% for course in courses %} - {{ course.name }} - {{ course.description }} {% endfor %}</code>
Beispiel 2: Auf der Seite der Kursdetails die Anzahl der registrierten Schüler
<code class="language-python">def course_list(request): total_courses = Course.objects.count() return render(request, 'courses.html', {'courses': courses, 'total_courses': total_courses})</code>
enrolled_students
标签接收course.id
作为参数,并返回该课程的已注册学生数。
结论
Kontakt -@syedamahamfahim?
Das obige ist der detaillierte Inhalt vonWie erstelle ich benutzerdefinierte Vorlagen -Tags in Django?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!