Maison > développement back-end > Tutoriel Python > Comment créer des balises de modèle personnalisées dans Django ?

Comment créer des balises de modèle personnalisées dans Django ?

Susan Sarandon
Libérer: 2025-01-27 08:10:10
original
532 Les gens l'ont consulté

Étiquette du modèle django: les données simplifiées montrent, améliorent la réutilisation du code

Dans le développement de Django, le modèle est utilisé pour rendre les données à la page HTML. Cet article présentera comment utiliser les balises de modèle django pour simplifier les données pour afficher la logique, éviter d'écrire à plusieurs reprises le code dans la vue.

django modèle d'exemple de base

En supposant que vous avez un modèle HTML de liste de cours simple:

How to Create Custom Template Tags in Django?

Le code de vue correspondant est le suivant:

How to Create Custom Template Tags in Django? La vue passe les données du curriculum au modèle, et la page Web est enfin affichée comme suit:

Question: montrez le nombre total de cours How to Create Custom Template Tags in Django?

Maintenant, supposons que vous deviez afficher le cours total sur la page Web. Une méthode consiste à ajouter une logique de calcul à la vue:

Mais si votre site Web a plusieurs pages (telles que la page de blog, la page d'auteur, la page de conférences), le nombre total de cours doit être affiché, et cette logique a besoin d'essence À cette époque, l'étiquette du modèle Django a été utile.

<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>
Copier après la connexion
Copier après la connexion
Qu'est-ce qu'une étiquette de modèle?

En bref, l'étiquette de modèle Django est une étiquette spéciale qui vous permet d'ajouter une fonction personnalisée dans le système de modèle Django. Il peut améliorer la réutilisation du code et éviter d'écrire à plusieurs reprises la même logique dans la vue.

Pourquoi utiliser des balises de modèle?

Supposons que votre application d'études doit afficher les données suivantes:

Numéro de cours total

Cours disponibles
  • Le nombre d'étudiants enregistrés
  • Au lieu d'ajouter une logique de calcul dans chaque vue, il est préférable d'utiliser des balises de modèle pour simplifier les opérations.
  • Étape 1: Créez une étiquette de modèle

Créez le dossier TemplateTags:

Créer

Folder:
    Folder:
  1. Votre structure de dossier est la suivante: templatetags

Dans le fichier , définissez le nombre de cours, le nombre de cours utiles et le nombre d'étudiants enregistrés.

<code>   courses/
       ├── templatetags/
           ├── __init__.py
           └── course_tags.py</code>
Copier après la connexion
    Étape 2: Chargez et utilisez l'étiquette de modèle dans le modèle
  1. course_tags.py Maintenant, vous pouvez charger et utiliser ces balises personnalisées dans le modèle HTML pour afficher des données connexes.
Exemple 1: Affichez le total du cours sur la page Liste des cours
<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>
Copier après la connexion

Dans le modèle , chargez des balises personnalisées et utilisez-les pour afficher le nombre total de cours et de cours disponibles:

Ce modèle s'affiche:

Numéro de cours total course_list.html Cours disponibles

<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>
Copier après la connexion

Exemple 2: Sur la page Détails du cours, le nombre d'étudiants enregistrés

    Sur la page de détail du cours, vous pouvez utiliser l'étiquette de modèle
  • pour afficher le nombre d'étudiants enregistrés dans des cours spécifiques:
<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>
Copier après la connexion
Copier après la connexion
La balise

enrolled_students reçoit course.id en paramètre et renvoie le nombre d'étudiants inscrits au cours.

Avantages de l'utilisation des balises de modèle

  1. Après avoir défini la balise de modèle, elle peut être réutilisée à plusieurs endroits de l'application sans avoir à écrire la même logique à plusieurs reprises dans chaque vue.
  2. Si vous devez modifier la façon dont le nombre de cours est calculé, mettez simplement à jour les balises du modèle sans modifier chaque vue ou modèle.

Sortie finale

How to Create Custom Template Tags in Django?

Conclusion

Cet article montre à travers des exemples comment utiliser les balises de modèle dans Django pour éviter de dupliquer la logique d'ajout de cours et de nombre d'étudiants dans les vues. Les balises de modèle améliorent la réutilisabilité et la maintenabilité du code.


Contact - @syedamahamfahim ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal