Django自定义标签需要3个参数,已提供2个

llmtgqce  于 2023-03-20  发布在  Go
关注(0)|答案(1)|浏览(137)
#custom_tags.py
def modulo(value, number,number2):
    mod = value % number
    if mod == number2:
        return True
    else:
        return False
{% comment %} index.html {% endcomment %}
{% for post in posts|slice:"1:"%}
                      {% if post.id|modulo:4:0 %}
                      <div class="post-entry-1">
                        <a href="{{post.slug}}"><img src="{{post.image.url}}" alt="" class="img-fluid"></a>
                        <div class="post-meta"><span class="date">{{post.category}}</span> <span class="mx-1">&bullet;</span> <span>{{post.created_date}}</span></div>
                        <h2><a href="single-post.html">{{ post.title }}</a></h2>
                      </div>
                      {% endif %}
                      {% endfor %}

位于/blog/ modulo的错误需要3个参数,已提供2个
当我用变量number对值求模时,我想用变量number 2检查结果

jk9hmnmh

jk9hmnmh1#

您定义了一个筛选器,而不是一个标记。一个标记(最多)可以带两个参数。应用标记的对象和一个可选参数。
可以使用以下命令定义标记:

from django import template

register = template.Library()

@register.simple_tag
def modulo(value, number, number2=0):
    return value % number == number2

然后,将其用于:

{% modulo post.id 4 as md %}
{% if md %}
    …
{% endif %}

也就是说,您的模板似乎实现了业务逻辑,这并不属于模板,而是属于视图。

相关问题