2011-11-27 70 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

相關問題