在Django 1.5中渲染天数而不是日期

时间:2014-01-23 05:44:35

标签: python django django-models

我正在Django建立一个关于新生婴儿的简单博客。对于博客文章的日期,而不是仅仅从数据库渲染中获取日期“发布于{{post.created | date}}”我想做“X days old”之类的事情,其中​​X = postCreated - birthDate。这是否需要在模型中完成,还是可以在模板中完成?

这是我的模特:

from django.db import models
from django.core.urlresolvers import reverse
from datetime import datetime, date

class Post(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=255)
    description = models.CharField(max_length=255)
    content = models.TextField()
    published = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)


    class Meta:
        ordering = ['-created']

    def __unicode__(self):
        return u'%s' % self.title

    def get_absolute_url(self):
        return reverse('blog.views.post', args=[self.slug]

以下是我的观点:

def post (request, slug):
    post = get_object_or_404(Post, slug=slug)
    return render(request, 'blog/post.html', {'post':post})

这是我的模板:

{% extends 'base.html' %}

{% block title %}{{post.title}}{% endblock %}

{% block content %}
    <article>
        <header>
            <h1>{{post.title}}</h1>
            <p>
                Posted on <time datetime="{{post.created|date:"c"}}">{{post.created|date}}</time> 
            </p>
        </header>
        <p class="description">
            {{post.description}}
        </p>
        {{post.content|safe}}
    </article>
{% endblock %}

1 个答案:

答案 0 :(得分:2)

您可以使用timesince过滤器在模板中执行此操作。

更新您的模板,以便在需要的地方使用以下代码。

{{post.created|timesince}}

来自文档:

  

timesince:将日期格式化为该日期以来的时间(例如,“4天,6   小时”)。