模板标签和过滤器

模板过滤器是函数

Filters are functions that accept just one or two arguments

接收的参数有限, 提供的功能不多

所以并不推荐使用

模板标签

尽量减少模板标签的使用

  • 模板标签很难 debug Template Tags Are Harder to Debug
  • 模板标签很难 reuse Template Tags Make Code Reuse Harder
  • 模板标签消耗性能 The Performance Cost of Template Tags
  • 只在负责HTML渲染的时候,创建并使用模板标签,数据运算相关在model中完成

命名模板标签

➤ flavors_tags.py
➤ blog_tags.py
➤ events_tags.py
➤ tickets_tags.py

调用模板标签

{  extends "base.html"  }
{  load flavors_tags  }


一个陷阱 Anti-Pattern

# settings/base.py
TEMPLATES = [
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'OPTIONS': {
    # Don't do this!
    # It's an evil anti-pattern!
    'builtins': ['flavors.templatetags.flavors_tags'],
},
]

Buy me a 肥仔水!