【Tips】Djangoテンプレートタグとフィルター - 役立つコードスニペット

By JoeVu, at: 2023年8月29日15:59

Estimated Reading Time: __READING_TIME__ minutes

[Tips] Django TemplateTag and Filter - Useful Code Snippet
[Tips] Django TemplateTag and Filter - Useful Code Snippet


Djangoでは、テンプレートタグとフィルタは、テンプレート内で動的なコンテンツを操作および表示するための必須ツールです。

最も一般的に使用されるテンプレートタグとフィルタをいくつか紹介します。

 

組み込みタグとフィルタ

 

テンプレートタグ

 

  1. {% for %}: リスト、クエリセット、その他の反復可能なデータのループに使用します。
     
  2. {% if %}: 特定の条件に基づいてコンテンツを表示するための条件文です。
     
  3. {% include %}: 別のテンプレートファイルの内容を現在のテンプレートに含めます。
     
  4. {% block %}と{% extends %}: テンプレート継承の作成と拡張に使用します。
     
  5. {% url %}: ビュー名とそのパラメータに基づいてURLを生成します。
     
  6. {% csrf_token %}: フォームのCSRFトークンを出力します。
     
  7. {% with %}: テンプレートコンテキスト内で変数に値を代入します。
     

フィルタ

 

  1. {{ variable|default:"Default Value" }}: 変数が定義されていない場合、デフォルト値を表示します。
     
  2. {{ variable|length }}: リスト、クエリセット、または文字列の長さを返します。
     
  3. {{ variable|date:"format" }}: 指定された形式に従って日付をフォーマットします。
     
  4. {{ variable|linebreaks }}: 改行をHTML改行に変換します。
     
  5. {{ variable|urlize }}: テキスト内のURLをクリック可能なリンクに変換します。
     
  6. {{ variable|truncatechars:num }}: 文字列を指定された文字数に切り詰めます。
     
  7. {{ variable|lower }}: テキストを小文字に変換します。
     
  8. {{ variable|upper }}: テキストを大文字に変換します。
     
  9. {{ variable|slugify }}: テキストをURLセーフなスラッグに変換します。
     
  10. {{ variable|safe }}: エスケープを防ぐためにコンテンツを安全なHTMLとしてマークします。
     
  11. {{ variable|floatformat }}: 浮動小数点数をフォーマットします。

 

カスタマイズされたタグとフィルタ

 

1. Get Item

 

一部の辞書には、スペースを含むキーがあり、これらのキー値にアクセスする際に多くの問題を引き起こす可能性があります。

def get_item(dict, key):
    return dict.get(key, 0)

 

2. 電話番号の非表示

 

これは、電話番号、メールアドレス、クレジットカード情報などの機密データを非表示にするのに役立ちます。

def hide_phone_number(string, member=None):
    try:
        return '{}***'.format(string[:-3])
    except Exception:
        return ''

 

3. 人間が読める日時

 

def humanize_timedelta(timedelta_obj):
    secs = timedelta_obj.total_seconds()

    hours = 0
    minutes = 0
    seconds = 0

    if secs > 3600:
        hours = secs // 3600
        secs = secs - hours * 3600

    if secs > 60:
        minutes = secs // 60
        secs = secs - minutes * 60

    if secs > 0:
        seconds = secs

    return "%02d:%02d:%02d" % (hours, minutes, seconds)

 

テンプレートタグやフィルタと同様に、テンプレートレンダリングを使用して、HTMLコンテンツをテンプレートに適用することもできます。例:

 

def boolean_checkbox(value):
    if value:
        return ''

    return ''

 

Tag list:
- Django
- Tips
- Tips and Tricks
- Django Filters
- TemplateTag
- TemplateTag Filters

Subscribe

Subscribe to our newsletter and never miss out lastest news.