如何在django中编写更好的模板标签

Guy*_*den 2 django django-templates

我已经看过如何编写模板标签,根据这样的模板设置上下文变量

{% my_template_tag 'blah' as my_context_variable %}
Run Code Online (Sandbox Code Playgroud)

但我希望能够做到这一点:

给定这两个groupuser在上下文中的视图被设置

{% is_in_group group user as is_member %}

{% if is_member %}
   #.... do stuff ....
{% endif %}
Run Code Online (Sandbox Code Playgroud)

或者理想情况是这样的:

{% if is_in_group group user %}
   # ....
{% end if %}
Run Code Online (Sandbox Code Playgroud)

显然,另一种方法是is_member在视图中设置- 但这仅仅是一个例子,并且知道如何做这样的事情会很好!

Dan*_*man 13

Evgeny对smart_if模板标签有一个好主意.但是,如果这不起作用,您可能会发现自定义过滤器更易于编写以进行此类比较.就像是:

@register.filter
def is_in(obj, val):
    return val is in obj
Run Code Online (Sandbox Code Playgroud)

你会像这样使用它:

{% if user|is_in:group.users %}
Run Code Online (Sandbox Code Playgroud)