ホームページ  >  記事  >  バックエンド開発  >  Django のカスタム テンプレート タグとフィルター (コード例)

Django のカスタム テンプレート タグとフィルター (コード例)

不言
不言転載
2019-04-01 11:03:061959ブラウズ

この記事では、Django のカスタム テンプレート タグとフィルター (コード例) に関するコンテンツを紹介します。これには一定の参考価値があります。必要な友人は参照できます。お役に立てば幸いです。

1, テンプレート ライブラリの作成

APP が配置されているディレクトリに新しいパッケージ templatetags を作成し、ストレージ タグを作成しますまたは、myfilters.py などの任意の名前のモジュールをフィルターします。

このモジュールに関連するコードを記述します。

注: templatetags が配置されている APP は、構成ファイルで構成する必要があります。

2. フィルターを定義します

フィルターは関数です。最初のパラメーターは処理される値です。その後は、任意の数のパラメーターを指定できます。フィルターパラメータ。

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. タグの定義

simple_tag

データを処理して特定のデータを返す

@register.simple_tag(name='posts_count')
def total_posts():
    return Post.published.count()

inclusion_tag

データを処理し、レンダリングされたテンプレートを返します

@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.html内容は次のとおりです:

<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. 使用

ラベルまたはフィルターをカスタマイズする前に、{% ロード モジュール名%} を使用して、テンプレート ファイルにカスタム ラベルとフィルターをロードする必要があります。

後は、Django に付属のタグと同じように使用できます。

注: カスタム タグまたはフィルターが配置されているモジュールが、現在のテンプレートによって継承された基本テンプレートにロードされている場合でも、現在のテンプレートに再度ロードする必要があります。

[関連する推奨事項: Python ビデオ チュートリアル ]

以上がDjango のカスタム テンプレート タグとフィルター (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。