ホームページ  >  記事  >  バックエンド開発  >  Django でフィルターと simple_tag を使用してフロントエンドの関数を定義する方法の詳細な説明

Django でフィルターと simple_tag を使用してフロントエンドの関数を定義する方法の詳細な説明

零下一度
零下一度オリジナル
2017-06-17 10:58:331041ブラウズ

この記事では、Django のフロントエンド カスタム関数 としてフィルターと simple_tag を使用する実装方法を主に、サンプル コードを通じて詳しく紹介します。必要な場合はフォローしてみましょう。

はじめに

Django のテンプレート エンジン は、フロントエンドを通じてほとんどのコード ロジック関数を実現できる一般的な関数関数を提供します。これは、if 判定など、最も一般的な状況の関数のみをサポートするためです。 、戻り値の ifequal 比較などはサポートされませんが、現時点では、バックグラウンド ビュー コードを渡したくない場合は、戻り値が正当な数値型であるかどうかを判断するなど、少し複雑な関数はサポートされていません。これを実装するには、いくつかのフロントエンド関数をカスタマイズできます。

Django には、filter と simple_tag という 2 つのメソッドが用意されており、戻り値を判定する関数を実装するための 2 つのメソッドを比較します。

準備

1. settingsconfigファイルにアプリケーションを登録する必要があります 2. アプリケーションディレクトリにtemplatetagsディレクトリを作成します

3、templatetagsにモジュールファイルを作成し、Djangoをインポートします内部メソッド


filter

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はフィルターと同じ方法ですが、異なる点は、デコレータ部分で 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 %}
に変更する必要があります。

パラメータの受け渡し

- フィルタは渡されるパラメータを最大 2 つまでサポートします

- シンプルで複数のパラメータをサポートします

フィルタでのパラメータの受け渡しは次の方法で実現できます

{{ 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。