0

我有一个模板标签如下,

     @register.filter
def get_runtime(date_start=None, date_end=None):
    fmt = '%Y-%m-%dT%H:%M:%S'
    if date_start and date_end is not None:
        date_start = datetime.strptime(date_start, fmt)
        date_end = datetime.strptime(date_end, fmt)
        return date_end - date_start
    else:
        return None

我将它传递到我的网站之一,如下所示,

<b>Run Time (min): </b> {{ value.date_start|get_runtime:value.date_end }}<br>

但它显示一个错误“strptime()正好需要2个参数(1个给定)”请帮助我。提前致谢

4

1 回答 1

0

If value is a model and date_start, date_end are DateTimeFields, then it's easier to add a method to model

def runtime(self):
    if self.date_start and self.date_end:
        return self.date_end - self.date_start

and use it in template:

{{ value.runtime }}

For your solution it's better use a tag instead of filter, because you do not modify value and calculate something else. Function returns None by default. So it will look like:

@register.simple_tag
def get_runtime(date_start, date_end):
    if date_start and date_end:
        return date_end - date_start

in template:

{% get_runtime value.date_start value.date_end %}
于 2015-04-16T14:44:52.617 回答