2011-11-27 43 views
27

我需要在视图中使用SHORT_DATETIME_FORMAT。Django:如何在视图中获取格式日期?

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语言环境只显示日期和时间,我认为这个常量应该做什么名称说的一个合法的日期。

回答

58

django.utils.formats模块是你在找什么。我能在文档中找到的唯一参考文献是Django 1.2 release notes

请记住,只有当USE_L10N设置为True时,本地化才会起作用。您可以按如下所示使用date_format。

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

'从django.utils导入formats'是一样的吗? https://docs.djangoproject.com/zh/dev/releases/1.2/#date-format-h​​elper-functions也许有人会发现这有用。 Thnx阿拉斯代尔! =) – holms

+0

糟糕。这是一个错字。 'memset.utils'是我公司的内部模块之一!正确的模块是'django.utils'。 – Alasdair

+0

从django.conf导入设置,然后设置.SHORT_DATE_FORMAT,有什么问题? –

22

你可能想用Python尝试使用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' 

的更多信息:

import django 
help(django.utils.dateformat) 
11

要在视图中使用Django的日期过滤器使用defaultfilters,例如:

from django.template import defaultfilters 

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

使用localize快捷方式。

>>> from django.utils.formats import localize 
>>> from datetime import datetime 
>>> 
>>> print(datetime.now()) 
2016-12-18 19:30:35.786818 
>>> print(localize(datetime.now())) 
18 декабря 2016 г. 19:30 
0
from django.utils.formats import date_format 

date_format(usr.date_joined) 
+0

这不会为现有答案添加任何内容。 'date_format'已经被建议。 –

+0

没错,我只在回答之后才注意到。但是,我的答案比Alasdair提供的答案更清晰。 – User3759685

相关问题