社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

WyattWang • 10 年前 • 8871 次点击  

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

烦请指教下。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/390
 
8871 次点击  
文章 [ 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 年前

嗯,需要自己进行处理