Heim > Artikel > Backend-Entwicklung > Benutzerdefinierte Django-Vorlagen-Tags und -Filter (Codebeispiel)
Der Inhalt dieses Artikels befasst sich mit benutzerdefinierten Django-Vorlagen-Tags (Codebeispiele). Ich hoffe, dass er für Freunde hilfreich ist.
1. Erstellen Sie eine Vorlagenbibliothek
Erstellen Sie ein neues Paket templatetags in dem Verzeichnis, in dem sich eine APP befindet, und erstellen Sie dann ein Speichertag oder filtern Sie darin ein Modul mit einem beliebigen Namen, z. B. myfilters.py.
Schreiben Sie in diesem Modul relevanten Code.
Hinweis: Die APP, in der sich templatetags befindet, sollte in der Konfigurationsdatei konfiguriert werden.
2. Filter definieren
Ein Filter ist eine Funktion. Danach kann es eine beliebige Anzahl von Parametern geben Filterparameter.
from django import template from django.template.defaultfilters import stringfilter register=template.Library() # 去除指定字符串 @register.filter(name='mycut') @stringfilter def mycut(value,arg): return value.replace(arg,'') # 注册过滤器 # register.filter(name='mycut',filter_func=mycut)
3. Tags definieren
simple_tag
Daten verarbeiten und spezifische Daten zurückgeben
@register.simple_tag(name='posts_count') def total_posts(): return Post.published.count()
inclusion_tag
Verarbeiten Sie die Daten und geben Sie eine gerenderte Vorlage zurück
@register.inclusion_tag('blog/post/latest.html') def show_latest_posts(count=5): latest_posts=Post.published.order_by('-publish')[:5] return { 'latest_posts':latest_posts, }
blog/post/latest.htmlDer Inhalt ist wie folgt:
<strong>最新文章</strong> <ul> {% for post in latest_posts %} <li> <a href="{% url 'blog:post_detail' post_id=post.id %}">{{ post.title }}</a> </li> {% endfor %} </ul>
4. Verwendung
Verwendung Vor benutzerdefinierten Tags oder Filtern müssen Sie {% load 模块名称 %}
verwenden, um benutzerdefinierte Tags und Filter in die Vorlagendatei zu laden.
Danach können Sie es genauso verwenden wie die Tags, die mit Django geliefert werden.
Hinweis: Auch wenn das Modul, in dem sich das benutzerdefinierte Tag oder der Filter befindet, in die von der aktuellen Vorlage geerbte Basisvorlage geladen wurde, muss es dennoch erneut in die aktuelle Vorlage geladen werden.
[Verwandte Empfehlungen: Python-Video-Tutorial]
Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Django-Vorlagen-Tags und -Filter (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!