在django模板中格式化日期

时间:2015-12-17 10:21:44

标签: django django-templates django-template-filters

我的模板以下列格式呈现标记{{ test.date}} -

2015-12-15T23:55:33.422679

当我尝试使用django内置的模板标记date对其进行格式化时,它不会显示任何内容。

我试过的变化:

{{ test.date|date:"SHORT_DATE_FORMAT" }}

{{ test.date|date:"D d M Y" }}

models.py:

class Human(models.Model):
    name = models.CharField(max_length=50,default='',blank=False)


class Test(models.Model):
    human = models.ForeignKey(Human)
    date = models.DateTimeField(default=datetime.now)

views.py:

def list(request):
    h = Human.objects.all()
    s=[]
    for her in h: 
        t = h.test_set.all()
        s.extend(t)
    context = RequestContext(request, {'test_list': s,})
    return render_to_response('template.html', context)

然后我在模板中使用它:

{% for test in test_list %}
     {{test.date}}
{% endfor %}

我错过了什么?

2 个答案:

答案 0 :(得分:2)

我不确定你想从这个逻辑中得到什么,但我认为你可以使用它:

def list(request):
    test = Test.objects.all()
    return render(request, 'template.html', {'test':test})

并在模板中:

{% for t in test %}
    {% t.date %}
{% endfor %}

如果您想要显示人物,只需添加周期{% t.human.name %}

答案 1 :(得分:0)

正在回答一个旧帖子...但是,对我来说,答案似乎并没有回答原始问题-这就是为什么Django内联模板日期格式无法正常工作...

答案是(我相信)作者正在尝试将类似以下内容的内容输出到他的页面:

"This is my date:{{test.date|date:"D d M Y"}}."

如果确实要尝试这种方法,那么问题是双引号在这种情况下不起作用。您需要改为执行以下操作:

"This is my date:{{test.date|date:'D d M Y'}}."

请注意单引号...