この記事では、Django のフロントエンド カスタム関数 としてフィルターと simple_tag を使用する実装方法を主に、サンプル コードを通じて詳しく紹介します。必要な場合はフォローしてみましょう。
はじめに
Django のテンプレート エンジン は、フロントエンドを通じてほとんどのコード ロジック関数を実現できる一般的な関数関数を提供します。これは、if 判定など、最も一般的な状況の関数のみをサポートするためです。 、戻り値の ifequal 比較などはサポートされませんが、現時点では、バックグラウンド ビュー コードを渡したくない場合は、戻り値が正当な数値型であるかどうかを判断するなど、少し複雑な関数はサポートされていません。これを実装するには、いくつかのフロントエンド関数をカスタマイズできます。
Django には、filter と simple_tag という 2 つのメソッドが用意されており、戻り値を判定する関数を実装するための 2 つのメソッドを比較します。
1. settingsconfigファイルにアプリケーションを登録する必要があります 2. アプリケーションディレクトリにtemplatetagsディレクトリを作成します
3、templatetagsにモジュールファイルを作成し、Djangoをインポートします内部メソッド
templatetags ディレクトリに Python モジュールを作成します。ここでは app01_func.py という名前で、内容は次のとおりです。
from django import template from django.template.defaultfilters import stringfilter register = template.Library() @register.filter def value_verification(value): # value为前端传递的参数 try: int(value) return True except: return False
バックグラウンド関数をカスタマイズした後、これをテンプレート ファイル 関数 function を呼び出すには、まずテンプレート ファイルのヘッダーにバックグラウンド Python モジュールを導入する必要があります。
{% load app01_func %}
たとえば、バックグラウンドの戻り値のロードが有効な数値であるかどうかを判断する必要がある場合、次の呼び出しを行うことができます:
{% if load|value_verification %} {{ load }} is a valid int number. {% else %} {{ load }} is letter. {% endif %}
simple_tagはフィルターと同じ方法ですが、異なる点は、デコレータ部分で simple_tag メソッド
from django import template from django.template.defaultfilters import stringfilter register = template.Library() @register.simple # 这里修改为simple_tag def value_verification(value): # value为前端传递的参数 try: int(value) return True except: return False
を呼び出す必要があることです。同時に、フロントエンドの呼び出しメソッドも
{% value_verification load %}
パラメータの受け渡し
- シンプルで複数のパラメータをサポートします
フィルタでのパラメータの受け渡しは次の方法で実現できます
{{ load | value_verification:"100"}}
ここでは、2 つのパラメータが渡されますバックエンドでは、関数の仮パラメータも指定する必要があります。
def value_verification(value, custom): # 配置好形参 ...
simple_tag では、複数の仮パラメータを指定できます。 フロントエンドの呼び出しメソッドは次のとおりです。
{% value_verification load 100 200 ... %}
ここのフィルターはパラメータを2つまでしか受け付けませんが、現時点ではパラメータが多く、simple_tagを使用したくありません。この場合、複数のパラメータを
文字列に結合できますバックエンドは、split メソッドを通じて複数のパラメータを取得することもできます。
simple_tag と filter を使用すると、テンプレート エンジンでは実行できない特定のことを実現できます。 Filter は、値を返す関数 function をラベルに変換します。たとえば、if、ifequal などの呼び出しメソッドも異なります。比較は次のようになります。または ifqual の場合、ここでは filter メソッドと stringfilter メソッドのみを使用できます。受け取ったすべてのパラメータを文字列型に変更し、レジスタ デコレータと同様に関数メソッドを参照することが可能です。これは register の下に配置する必要があることに注意してください。有効になりません。
以上がDjango でフィルターと simple_tag を使用してフロントエンドの関数を定義する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。