Heim  >  Artikel  >  Backend-Entwicklung  >  Benutzerdefinierte Django-Vorlagen-Tags und -Filter (Codebeispiel)

Benutzerdefinierte Django-Vorlagen-Tags und -Filter (Codebeispiel)

不言
不言nach vorne
2019-04-01 11:03:061943Durchsuche

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 &#39;blog:post_detail&#39; 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen