Django:如何在视图中获取格式化日期?

37 投票
6 回答
62035 浏览
提问于 2025-04-17 07:10

我需要在视图中使用 SHORT_DATETIME_FORMAT。

def manage_list(request):

    user = User.objects.filter().order_by('date_joined') 
    usrs = [] 
    for usr in user: 
        usrs.append({
            _('First name'):  usr.first_name, 
            _('Last name'):   usr.last_name,
            _('Email'):       usr.email,
            _('Active'):      usr.is_active,
            _('Superuser'):   usr.is_superuser,
            _('Staff'):       usr.is_staff,
            _('Joined date'): usr.date_joined.strftime(SHORT_DATETIME_FORMAT),    
        }) 

    data = simplejson.dumps(usrs, indent=4)
    return HttpResponse(data, mimetype='application/json')

usr.date_joined 的类型我想应该是“日期字段”。我想根据 Django 的地区设置来格式化这个数据。所以这个字符串可能会有帮助。我知道有一个模板过滤器可以做到我想要的,但我只想在视图中格式化 usr.date_joined,保持 Django 选择的地区设置。

如果还有其他方法可以做到这一点,请提供一些例子。最后,我只想要一个根据 Django 地区设置格式化的日期,显示日期和时间,我觉得这个常量应该能做到它名字所说的功能。

6 个回答

13

在Django的视图中使用日期过滤器时,可以使用defaultfilters,比如:

from django.template import defaultfilters

formatted_date = defaultfilters.date(usr.date_joined, "SHORT_DATETIME_FORMAT")
27

你可以试试用 django.utils.dateformat.DateFormat 这个工具。

>>> from datetime import datetime
>>> dt = datetime.now()
>>> from django.utils.dateformat import DateFormat
>>> from django.utils.formats import get_format
>>> df = DateFormat(dt)
>>> df.format(get_format('DATE_FORMAT'))
u'April 23, 2013'
>>> df.format('Y-m-d')
u'2013-04-23'

关于如何在 Python 中使用的更多信息:

import django
help(django.utils.dateformat)
76

你需要的内容在 django.utils.formats 这个模块里。我在文档中找到的唯一参考是在 Django 1.2 的发布说明里。

记住,只有当 USE_L10N 设置为 True 时,本地化功能才会生效。你可以这样使用日期格式。

from datetime import datetime
from django.utils import formats
date_joined = datetime.now()
formatted_datetime = formats.date_format(date_joined, "SHORT_DATETIME_FORMAT")

撰写回答