ホームページ >バックエンド開発 >Python チュートリアル >Django でカスタム テンプレート タグを作成するには?
djangoテンプレートラベル:簡略化されたデータが表示され、コードの再利用
Django開発では、テンプレートを使用してデータをHTMLページにレンダリングします。この記事では、Djangoテンプレートタグを使用してデータを簡素化してロジックを表示する方法を紹介します。ビューで繰り返しコードを作成しないようにします。
シンプルなコースリストHTMLテンプレートがあると仮定すると:
対応するビューコードは次のとおりです
ビューはカリキュラムデータをテンプレートに渡し、Webページは次のように最終的に表示されます。
質問:コースの総数を示します
さて、Webページに合計コースを表示する必要があるとします。 1つの方法は、ビューに計算ロジックを追加することです。
しかし、あなたのウェブサイトに複数のページ(ブログページ、著者ページ、講師ページなど)がある場合、コースの総数を表示する必要があり、このロジックには本質が必要ですこの時点で、Djangoテンプレートラベルは便利でした。要するに、Djangoテンプレートラベルは、Djangoテンプレートシステムにカスタム関数を追加できる特別なラベルです。コードの再利用を改善し、ビューで同じロジックを繰り返し作成することを避けることができます。
<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>なぜテンプレートタグを使用するのですか?
カリキュラムアプリケーションが次のデータを表示する必要があると仮定します。
利用可能なコース
各ビューに計算ロジックを追加する代わりに、テンプレートタグを使用して操作を簡素化することをお勧めします。
フォルダー構造は次のとおりです
templatetags
ここで、これらのカスタムタグをHTMLテンプレートにロードして使用して、関連データを表示できます。 テンプレートでは、カスタムタグを読み込み、それらを使用してコースと利用可能なコースの総数を表示します。
<code> courses/ ├── templatetags/ ├── __init__.py └── course_tags.py</code>このテンプレートは
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>
コースの詳細ページでは、
テンプレートラベルを使用して、特定のコースに登録された学生の数を表示できます。<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
をパラメータとして受け取り、コースに登録されている学生の数を返します。
この記事では、ビューにコースと生徒数を追加するロジックの重複を避けるために、Django でテンプレート タグを使用する方法を例を通して説明します。テンプレート タグにより、コードの再利用性と保守性が向上します。
連絡先 - @syedamahamfahim ?
以上がDjango でカスタム テンプレート タグを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。