Wie kann ich das Standardformat für Django-Datumsvorlagen ändern?

100

Ich habe Daten im ISO 8601-Format in der Datenbank %Y-%m-%d. Wenn das Datum jedoch an die Vorlage weitergegeben wird, wird es wie folgt angezeigt Oct. 16, 2011.

Gibt es eine Möglichkeit, das Format nach Belieben zu bearbeiten?

bash-
quelle

Antworten:

56

date Vorlagen-Tag

settings.DATE_FORMAT

Ignacio Vazquez-Abrams
quelle
Ich bin nicht sicher, wie ich das in der Einstellungsdatei ändern würde
Bash
3
Genauso wie Sie jede andere Einstellung ändern.
Ignacio Vazquez-Abrams
22
Der Link zu Dokumenten ist nicht wirklich eine Antwort, also habe ich diese und die Antwort von medmunds herabgestimmt.
Eric
274

In Ihrer Vorlage können Sie den Django- dateFilter verwenden. Z.B:

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

Gibt:

Geburtstag: 29. Januar 1983

Weitere Formatierungsbeispiele in den Datumsfilterdokumenten .

medmunds
quelle
Ich denke, dies funktioniert nur, wenn Datum als Datum / Uhrzeit-Objekt angegeben wird. Was ist, wenn es sich nur um eine Zeichenfolge handelt, die aus der Ansicht übergeben wurde?
Mohammed Shareef C
2
Für eine beliebige Zeichenfolge, die ein Datum / eine Uhrzeit enthält, würde ich sie wahrscheinlich im Ansichtscode in eine Python-Datums- / Uhrzeitangabe analysieren. (Oder wenn möglich sogar früher - überall dort, wo diese Datumszeichenfolge zum ersten Mal in meinem Code eintrifft.) Wenn Sie jedoch wirklich Zeichenfolgen verwenden möchten, um Datumsangaben an Ihre Django-Vorlagen zu übergeben, ist diese Antwort hilfreich.
Medmunds
Perfektes Beispiel für die Verwendung in der Vorlagendatei.
Vinod Patidar
30

Stellen Sie beide DATE_FORMATund einUSE_L10N

Um Änderungen für die gesamte Site in Django 1.4.1 vorzunehmen, fügen Sie Folgendes hinzu:

DATE_FORMAT = "Y-m-d"

zu Ihrer settings.pyDatei und bearbeiten:

USE_L10N = False

da l10n überschreibt DATE_FORMAT

Dies ist dokumentiert unter: https://docs.djangoproject.com/de/dev/ref/settings/#date-format

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

Verwenden Sie einfach dies:

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

Dies wird so etwas wie 2016-10-16 zeigen . Sie können das Format beliebig verwenden.

hardcoderrsl
quelle
8

Um das Datumsformat in views.py zu ändern und es dann der Vorlage zuzuweisen.

# 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
quelle
8

Was Sie brauchen, ist ein Datumsvorlagenfilter .

z.B:

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

Dies kehrt zurück Joined December 2018

Toluwalemi
quelle
6

Wenn Sie ein kurzes Datum und eine kurze Uhrzeit (11/08/2018 03:23 Uhr) anzeigen müssen, können Sie dies folgendermaßen tun:

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

Details zu diesem Tag hier und mehr zu Daten gemäß dem angegebenen Format hier

Beispiel:

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