Django: Utilisation de DATE_FORMAT, DATETIME_FORMAT, paramètres time_format dans settings.py?
Je tiens à l'échelle mondiale (par le biais de l'ensemble de mon site, admin et front-end) régler les dates et l'heure sont affichées à mes goûts, mais je ne peux pas comprendre ce qui se passe avec les DATE_FORMAT, DATETIME_FORMAT et paramètres time_format variables dans settings.py.
Dans cette question il est dit que les paramètres sont ignorés. La question est de plus d'un an. Dans la documentation de Django, il dit qu'il peut être utilisé lorsque vous avez USE_L10N = True
et apparemment quelque chose a changé dans Django 1.2. Selon cette cependant il y a peut-être un bug.
Je suis actuellement en utilisant Django 1.2 et quand j'ai USE_L10N = True
il ignore la date(heure) format in settings.py. Quand j'ai USE_L10N = False
il semble également ignorer.
Est-il un moyen à l'échelle mondiale personnaliser la date et l'heure d'affichage? Ou devrais-je créer mes propres formats de fichier comme Karen suggère dans les Django Utilisateurs de Google Groupe la poste?
OriginalL'auteur Heyl1 | 2010-09-01
Vous devez vous connecter pour publier un commentaire.
Eu le même problème, la solution est simple et documenté. Chaque fois que vous effectuez le rendu d'une date, vous devez spécifier que vous voulez le modèle pour le rendre comme une date/heure/short_date/datetime (par exemple,
{{ some_date_var | date }}
et puis il va le rendre comme spécifié avecDATE_FORMAT
dans votre settings.pyExemple:
Ce sens; par exemple, le modèle a besoin de savoir s'il doit utiliser la
DATE_FORMAT
ou laSHORT_DATE_FORMAT
ou quoi que ce soit.OriginalL'auteur dr jimbob
À la recherche par le biais de la source montre que DATETIME_FORMAT, etc., ne sont utilisés que lorsque
django.utils.formats.localize()
est appelé, et qui ne paraît être appelée lorsquedjango.template.VariableNode
s sont rendus.Je ne sais pas quand exactement
VariableNode
s sont utilisés dans le modèle de rendu, mais je suppose que si vous avezsettings.USE_L10N
activé et que vous avez unVariableNode
, il sera localisé.localize
ressemble à ceci:Pour répondre à votre question, je serais probablement écrire ce contexte processeur appelé
localize()
sur tout dans le contexte.OriginalL'auteur Seth
Vous pouvez remplacer
DATE_FORMAT
,DATETIME_FORMAT
,TIME_FORMAT
et d'autres formats de date/heure lorsqueUSE_L10N = True
par la création des fichiers de format comme décrit dans la documentation de Django.En résumé:
FORMAT_MODULE_PATH = 'yourproject.formats'
danssettings.py
yourproject/formats/en
(en remplacement deen
avec le correspondant de l'ISO 639-1 paramètres régionaux de code si vous utilisez d'autres paramètres régionaux que l'anglais) et ajouter__init__.py
les fichiers de tous les répertoires pour le rendre valide d'un module Pythonformats.py
à la feuille répertoire contenant les définitions de format que vous souhaitez remplacer, par exemple,DATE_FORMAT = 'j. F Y'
.Exemple à partir d'un réel projet ici.
OriginalL'auteur mrts
Une réponse tardive, mais j'espère que cela va aider quelqu'un d'autre à la recherche pour cela.
Par la mise en USE_L10N = True dans vos paramètres, Django cherche paramètres régionaux de format spécifique, en leur donnant la priorité sur les non-locale les paramètres associés.
La solution: (pour afficher 30/12/2017 sur un DateField)
et pour les entrées (pour accepter 30/12/2017 ou 30-12-2017)
Référence: https://mounirmesselmeni.github.io/2014/11/06/date-format-in-django-admin/
*testé sur Django==1.10.7
OriginalL'auteur Bader