2011-11-27 2 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에는 "날짜 입력란"유형이 있습니다. 장고 로케일에 따라이 데이터를 포맷하고 싶습니다. 그래서이 문자열은 도움이 될 것입니다. 나는 템플릿 필터가 있다는 것을 알고 있지만, 나는 포맷을하고 싶다. 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

' 는 formats'은 동일 가져올? 아마도 누군가가 유용 할 것입니다. https://docs.djangoproject.com/en/dev/releases/1.2/#date-format-helper-functions Thnx Alasdair! =) – holms

+0

죄송합니다. 그것은 오타였습니다. 'memset.utils'는 우리 회사의 내부 모듈 중 하나입니다! 정확한 모듈은'django.utils'입니다. – Alasdair

+0

'django.conf 가져 오기 설정에서 '와'settings.SHORT_DATE_FORMAT'의 문제점은 무엇입니까? –

22

당신은 파이썬 사용 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

는보기에서 장고 날짜 필터를 사용하려면 defaultfilters을 사용하십시오. 예 :

from django.template import defaultfilters 

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

localize 바로 가기를 사용하십시오. django.utils에서

>>> 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

관련 문제