web-dev-qa-db-fra.com

Django: comment obtenir la date du format dans les vues?

J'ai besoin d'utiliser SHORT_DATETIME_FORMAT en vue.

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 a un type de "champ date" je pense. Je souhaite formater ces données en fonction des paramètres régionaux Django. donc cette chaîne devrait probablement aider. Je sais qu'il existe un filtre de modèle qui me convient, mais je souhaite formater usr.date_joined in view only - en sauvegardant les paramètres régionaux choisis par Django. 

S'il existe d'autres méthodes pour ce faire, veuillez fournir des exemples. à la fin je veux juste avoir une date formatée selon les paramètres régionaux de Django qui ne montre que la date et l'heure, je pense que cette constante devrait faire ce que le nom dit.

33
holms

Le module Django.utils.formats est ce que vous recherchez. La seule référence que j'ai pu trouver dans la documentation était dans les notes de publication de Django 1.2 .

N'oubliez pas que la localisation ne fonctionnera que si le paramètre USE_L10N est True. Vous pouvez utiliser le format_date comme suit.

from datetime import datetime
from Django.utils import formats
date_joined = datetime.now()
formatted_datetime = formats.date_format(date_joined, "SHORT_DATETIME_FORMAT")
63
Alasdair

Vous voudrez peut-être essayer d'utiliser 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'

Plus d'informations en utilisant Python:

import Django
help(Django.utils.dateformat)
23
Tomi

Pour utiliser le filtre Django date dans une vue, utilisez defaultfilters, par exemple:

from Django.template import defaultfilters

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

Utilisez le raccourci 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
1
lampslave
from Django.utils.formats import date_format

date_format(usr.date_joined)
0
User3759685