Jak mogę zmienić domyślny format szablonu daty w Django?

100

Mam dat w formacie ISO 8601 w bazie danych %Y-%m-%d. Jednak kiedy data jest przekazywana do szablonu, to wychodzi jakoś w rodzaju Oct. 16, 2011.

Czy istnieje sposób, w jaki mogę manipulować formatem do dowolnego celu?

grzmotnąć-
źródło

Odpowiedzi:

57

date tag szablonu

settings.DATE_FORMAT

Ignacio Vazquez-Abrams
źródło
Nie jestem pewien, jak bym to zmienił w pliku ustawień
bash
3
W ten sam sposób zmieniasz wszystkie inne ustawienia.
Ignacio Vazquez-Abrams
22
Link do dokumentów nie jest tak naprawdę odpowiedzią, więc zagłosowałem w dół i za odpowiedź medmundów.
eric
276

W swoim szablonie możesz użyć datefiltru Django . Na przykład:

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

Daje:

Urodziny: 29 stycznia 1983 r

Więcej przykładów formatowania w dokumentach filtrów daty .

medmunds
źródło
Myślę, że działa to tylko wtedy, gdy data jest podana jako obiekt daty i godziny. A jeśli to tylko ciąg przekazany z widoku?
Mohammed Shareef C,
2
W przypadku dowolnego ciągu zawierającego datę / godzinę prawdopodobnie przeanalizowałbym go na datę i godzinę w języku Python w kodzie widoku. (Lub nawet wcześniej, jeśli to możliwe - gdziekolwiek ten ciąg znaków daty pojawia się po raz pierwszy w moim kodzie.) Ale jeśli naprawdę chcesz używać łańcuchów do przekazywania dat do szablonów Django, ta odpowiedź będzie pomocna.
medmunds
Powyższy przykład doskonały do ​​wykorzystania w pliku szablonu.
Vinod Patidar
20

Po prostu użyj tego:

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

To pokaże coś w stylu 2016-10-16 . Możesz użyć formatu, jak chcesz.

hardcoderrsl
źródło
8

Aby zmienić format daty w views.py, a następnie przypisz go do szablonu.

# 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
źródło
8

Potrzebujesz filtru szablonu daty .

na przykład:

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

To wraca Joined December 2018

Toluwalemi
źródło
6

Jeśli chcesz pokazać krótką datę i godzinę (11/08/2018 03:23 rano), możesz to zrobić w następujący sposób:

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

Szczegóły dotyczące tego tagu tutaj i więcej informacji o datach według podanego formatu tutaj

Przykład:

<small class="text-muted">Last updated: {{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}</small>
nilsoviani
źródło