【问题标题】:django creating template filtersdjango 创建模板过滤器
【发布时间】:2012-08-18 11:59:15
【问题描述】:

views.py

@register.filter(name="avl")
def avl_facilities(obj):
    return obj.avl_facilities()

@register.filter
def na_facilities(obj):
    return obj.na_facilities()

models.py

class Model(models.Model):
#some code .....
    def avl_facilities(self):
        item = ['bar','bank','music','wifi','offers','credit']
        avl = []
        for i in item:
            if getattr(self,i) == True:
                avl.append(i)
        return avl
    def na_facilities(self):
        item = ['bar','bank','music','wifi','offers','credit']
        na = []
        for i in item:
            if getattr(self,i) == False:
                na.append(i)
        return na

html

<div class="facility pad10">
    {% for item in data.rest|avl %}
/* data.rest is appropriate instance of model defined above*/
    <span class="label label-danger mrg2 pad5 pull-left">
    {{item|title}}
    </span>
    {% endfor %}
</div>

错误

Invalid filter: 'avl_facilities'

怀疑

我无法理解模型中的 avl_facilities 是否返回正确的可迭代列表,但它不能用作模板过滤器,在此先感谢

【问题讨论】:

    标签: django django-template-filters


    【解决方案1】:

    您不能在 views.py 中定义过滤器。您必须将它们放在 templatetags 目录中的新文件中。

    您应该知道,这两个过滤器都是完全没有必要的。只要不带参数,就可以从模板中调用模型方法:

    {% for item in data.rest.avl_facilities %}
    

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 2012-06-03
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2023-04-11
      • 2013-03-16
      相关资源
      最近更新 更多