首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'SafeString‘对象没有属性'total_seconds’

'SafeString‘对象没有属性'total_seconds’
EN

Stack Overflow用户
提问于 2022-02-15 16:08:31
回答 1查看 108关注 0票数 0

我正在用django编写一个自定义模板标记。现在,我简单地解释一下。我的最后一个目标是在我的模板中有一个持续时间字段作为小时和分钟。目前,我有一个持续时间字段,它也提供秒,我对此不感兴趣。所以目标是1小时= 01:00,但现在我有01:00。当我在视图中使用它时,我编写了这个函数,但我也需要在django模板中使用它。

custom_tags.py

代码语言:javascript
复制
from django import template
register = template.Library()
@register.simple_tag

    def duration(td):
        total_seconds = int(td.total_seconds())
        hours = total_seconds // 3600
        minutes = (total_seconds % 3600) // 60
        if minutes < 1:
            minutes = '00'
        elif minutes < 2:
            minutes = '01'
        elif minutes < 3:
            minutes = '02'
        elif minutes < 4:
            minutes = '03'
        elif minutes < 5:
            minutes = '04'
        elif minutes < 6:
            minutes = '05'
        elif minutes < 7:
            minutes = '06'
        elif minutes < 8:
            minutes = '07'
        elif minutes < 9:
            minutes = '08'
        elif minutes < 10:
            minutes = '09'
        return '{}:{}'.format(hours, minutes)

模板

代码语言:javascript
复制
<td>
 {% if mix.mission.duration_dual is not None %} <strong>{% duration 'mix.mission.duration_dual' %}</strong>{% endif %}
  <div>{% if mix.log_entry.eet is not None and mix.log_entry.solo_flight == False %} {{mix.log_entry.eet|time:'G:i'}}  {% endif %}</div>
</td>

在这种情况下,视图和模型是非常无用的,因为一切都很好,我只需要了解是否有办法使时间场在这种情况下也出现。我所犯的错误是:

代码语言:javascript
复制
'SafeString' object has no attribute 'total_seconds'

回溯:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/astergest/mission/views.py", line 71, in student_mission_ppl
    return render(request, 'mission/student_mission_ppl.html', context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 176, in render
    return self._render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 168, in _render
    return self.nodelist.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 977, in render
    return SafeString(''.join([
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 938, in render_annotated
    return self.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/loader_tags.py", line 153, in render
    return compiled_parent._render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 168, in _render
    return self.nodelist.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 977, in render
    return SafeString(''.join([
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 938, in render_annotated
    return self.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/loader_tags.py", line 65, in render
    result = block.nodelist.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 977, in render
    return SafeString(''.join([
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 938, in render_annotated
    return self.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/defaulttags.py", line 214, in render
    nodelist.append(node.render_annotated(context))
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 938, in render_annotated
    return self.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/defaulttags.py", line 295, in render
    return nodelist.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 977, in render
    return SafeString(''.join([
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/base.py", line 938, in render_annotated
    return self.render(context)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/venv/lib/python3.9/site-packages/django/template/library.py", line 193, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "/Users/Giorgio 1/Documents/Programmazione/Astergest/astergest/mission/templatetags/custom_tags.py", line 7, in duration
    total_seconds = int(td.total_seconds())
AttributeError: 'SafeString' object has no attribute 'total_seconds'

非常感谢您的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-15 16:24:16

这是因为td是一个字符串,而不是时间增量。您可以通过从标记中删除引号来修复这个问题,如下所示

代码语言:javascript
复制
 <td>
 {% if mix.mission.duration_dual is not None %}   
 <strong>{% duration mix.mission.duration_dual 
 %}</strong>{% endif %}
 <div>{% if mix.log_entry.eet is not None and 
 mix.log_entry.solo_flight == False %} 
 {{mix.log_entry.eet|time:'G:i'}}  {% endif %}. 
 </div>
 </td>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71129700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档