0

カスタム django フィルターのチュートリアルに従っていますが、実際に何が起こっているのか説明できません。テンプレートのコードは次のとおりです。

{% load filters %}
{{ entry.language|cut:"blabla" }

そしてフィルターはこちら

from django import template

register = template.Library()

def cut(value, arg):
    return value.replace(arg, '')

register.filter('cut', cut)

奇妙なことに、このエラーが発生しています

AttributeError
'Language' object has no attribute 'replace'

しかし、登録フィルター関数を削除する register.filter('cut', cut)と、エラーは発生せず、フィルターは実際に実行されますか? ここで実際に何が起こっているのですか?

4

1 に答える 1

0

すでに組み込みのフィルターがありますcut

パラメータが文字列でない場合、失敗するという問題があります。組み込みバージョンは、おそらく。を呼び出す前に文字列に変換されますreplace()。代わりにそれを使用してください。

于 2013-03-04T22:36:01.023 に答える