Comment puis-je changer le format de modèle de date Django par défaut?

100

Je dates au format ISO 8601 dans la base de données, %Y-%m-%d. Cependant, lorsque la date est transmise au modèle, cela ressemble à quelque chose comme Oct. 16, 2011.

Existe-t-il un moyen de manipuler le format selon ce que je veux?

frapper-
la source

Réponses:

57

date balise de modèle

settings.DATE_FORMAT

Ignacio Vazquez-Abrams
la source
Je ne sais pas comment je changerais cela dans le fichier de paramètres
bash-
3
De la même manière que vous modifiez tous les autres paramètres.
Ignacio Vazquez-Abrams
22
Le lien vers la documentation n'est pas vraiment une réponse, alors j'ai voté contre cette question et a voté pour la réponse de medmunds.
eric
276

Dans votre modèle, vous pouvez utiliser le datefiltre de Django . Par exemple:

<p>Birthday: {{ birthday|date:"M d, Y" }}</p>

Donne:

Anniversaire: 29 janv. 1983

Plus d'exemples de mise en forme dans la documentation du filtre de date .

Medmunds
la source
Je pense que cela ne fonctionne que si la date est fournie en tant qu'objet datetime. Que faire s'il ne s'agit que d'une chaîne passée de la vue?
Mohammed Shareef C
2
Pour une chaîne arbitraire contenant une date / heure, je l'analyserais probablement dans une date / heure python dans le code de vue. (Ou même plus tôt si possible - partout où cette chaîne de date arrive pour la première fois dans mon code.) Mais si vous voulez vraiment utiliser des chaînes pour passer des datetimes à vos modèles Django, cette réponse semble utile.
medmunds
Exemple ci-dessus parfait à utiliser dans le fichier modèle.
Vinod Patidar
30

Réglez à la fois DATE_FORMATetUSE_L10N

Pour apporter des modifications à l'ensemble du site dans Django 1.4.1, ajoutez:

DATE_FORMAT = "Y-m-d"

dans votre settings.pyfichier et éditez:

USE_L10N = False

puisque l10n remplace DATE_FORMAT

Ceci est documenté sur: https://docs.djangoproject.com/en/dev/ref/settings/#date-format

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
la source
20

Utilisez simplement ceci:

{{you_date_field|date:'Y-m-d'}}

Cela montrera quelque chose comme 2016-10-16 . Vous pouvez utiliser le format comme vous le souhaitez.

hardcoderrsl
la source
8

Afin de changer le format de date dans le views.py, puis attribuez-le au modèle.

# get the object details 
home = Home.objects.get(home_id=homeid)

# get the start date
_startDate = home.home_startdate.strftime('%m/%d/%Y')

# assign it to template 
return render_to_response('showme.html' 
                                        {'home_startdate':_startDate},   
                                         context_instance=RequestContext(request) )  
kta
la source
8

Ce dont vous avez besoin est un filtre de modèle de date .

par exemple:

<td>Joined {{user.date_created|date:"F Y" }}<td>

Cela renvoie Joined December 2018

Toluwalemi
la source
6

Si vous avez besoin d'afficher une date et une heure courtes (08/11/2018 03:23), vous pouvez le faire comme ceci:

{{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}

Détails pour cette balise ici et plus sur les dates selon le format donné ici

Exemple:

<small class="text-muted">Last updated: {{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}</small>
nilsoviani
la source