2011-11-27 11 views
27

Necesito usar SHORT_DATETIME_FORMAT en vista.Django: cómo obtener la fecha de formato en las vistas?

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 tiene un tipo de "campo de fecha" creo. Quiero formatear esta información de acuerdo con django locale. por lo que esta cadena probablemente debería ayudar. Sé que hay un filtro de plantilla que hace que quiera, pero quiero formatear usr.date_unificado en la vista solamente - guardando django Choosen locale.

Si hay otros métodos para hacerlo, proporcione ejemplos. al final solo quiero tener una fecha formateada según django locale que muestre solo la fecha y la hora, creo que esta constante debe hacer lo que su nombre dice ...

Respuesta

58

El módulo django.utils.formats es lo que estás buscando. La única referencia que pude encontrar en los documentos estaba en el Django 1.2 release notes.

Recuerde que la localización solo funcionará si la configuración USE_L10N es True. Puede usar date_format de la siguiente manera.

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

'de django.utils importar formats' es la misma? https://docs.djangoproject.com/en/dev/releases/1.2/#date-format-helper-functions tal vez alguien encuentre útil esto. ¡Thnx Alasdair! =) – holms

+0

Vaya. Eso fue un error tipográfico 'memset.utils' es uno de los módulos internos de mi empresa. El módulo correcto es 'django.utils'. – Alasdair

+0

¿Qué pasa con 'from django.conf import settings' y luego' settings.SHORT_DATE_FORMAT'? –

22

Es posible que desee intentar usar 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' 

Más información utilizando Python:

import django 
help(django.utils.dateformat) 
11

Para utilizar el filtro de Django fecha en una vista use defaultfilters, p. ej .:

from django.template import defaultfilters 

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

Use el atajo 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

Esto no agrega nada a las respuestas existentes. 'date_format' ya fue sugerido. –

+0

Cierto, solo lo noté después de responder. Pero aún así, mi respuesta es más limpia que la dada por Alasdair. – User3759685

Cuestiones relacionadas