Py学习  »  Django

Django中国社区的时间过滤器是怎么做的?

WyattWang • 10 年前 • 8860 次点击  

在Django的时间过滤器中,有个timesince可以显示发数据记录的时间与当前时间的差,我在自己站上使用的时候,时间记录都是多少小时前,多少天,多少周,甚至于多少月前,但我看Django中国社区的时间,貌似超过一个时间段之后,就直接显示为具体的年月日,这个是如何做到的?自己写的tag吗?

烦请指教下。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/390
 
8860 次点击  
文章 [ 7 ]  |  最新文章 10 年前
Py站长
Reply   •   1 楼
Py站长    10 年前

@WyattWang 每个人发表评论的时候加个过滤逻辑,将 @数据 取出来,然后找出这个人,给他发消息。

WyattWang
Reply   •   2 楼
WyattWang    10 年前

@Django中国社区 没做过那个,不清楚怎么做的,现在就先这样吧。

对了,还有个事,你这个“@”功能是怎么做的?

Py站长
Reply   •   3 楼
Py站长    10 年前

@WyattWang 你用locale来做多语言吧

Py站长
Reply   •   4 楼
Py站长    10 年前

@易冷天涯 用Templatetags来做啦

WyattWang
Reply   •   5 楼
WyattWang    10 年前

这是我写的一个,但我觉得后面的有个中文的前,不太好,可以修改下不?

# -*- coding: utf-8 -*-
from django import template
from django.utils.timesince import timesince
from django.utils import formats
from django.utils.dateformat import format, time_format
from django.utils import timezone

register = template.Library()

@register.filter(expects_localtime=True, is_safe=False)
def weetimesince(value, arg=None):
    if value is None:
        return ''

    now = timezone.now()
    diff = now - value
    if diff.days >= 3:
        try:
            return formats.date_format(value, arg)
        except AttributeError:
            try:
                return format(value, arg)
            except AttributeError:
                return ''
    else:
        try:
            return timesince(value)+u'前'
        except (ValueError, TypeError):
            return ''
易冷天涯
Reply   •   6 楼
易冷天涯    10 年前

@Django中国社区

您好,请教下这些逻辑是写在了templatetags里面还是在view层就已经处理好了?谢谢。

Py站长
Reply   •   7 楼
Py站长    10 年前

嗯,需要自己进行处理