Django:如何在视图中获取格式化日期?
我需要在视图中使用 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")