Jak wyświetlić bieżący rok w szablonie Django?


163

Jaki jest wbudowany tag szablonu do dynamicznego wyświetlania bieżącego roku. Na przykład „2011”, jaki byłby tag szablonu, aby to wyświetlić?

Odpowiedzi:


324

Pełny tag do wydrukowania tylko bieżącego roku to {% now "Y" %}. Zwróć uwagę, że Y musi być w cudzysłowie.


4
Dla przypomnienia, {% now%} nie daje poprawnych wyników dla użytkowników w innej strefie czasowej niż serwer.
Tomasz Zieliński

27
@Thomas True w niektórych przypadkach jednak najczęstszym przypadkiem użycia, jaki widziałem, aby chcieć bieżącego roku jest informacja o prawach autorskich i naprawdę nie jest tak ważne, aby był idealny przez te 24 godziny, podczas gdy 1 stycznia obchodzi świat.
Endophage

2
nawiasem mówiąc, ten kod jest błędny, Ynależy go zacytować tak, jak w odpowiedzi cabisheka.
Endophage

Gdybym otrzymywał miesiąc, tj. „M”, jak zmieniłbym „listopad” na „listopad”
Josh

1
@Josh pełna dokumentacja to docs.djangoproject.com/en/dev/ref/templates/builtins/… , ale szukasz FzamiastM
Haldean Brown



2

Użyłem następujących na mojej stronie internetowej opartej na Django: http://pmtboyshostelraipur.pythonanywhere.com/, która działa dobrze zgodnie z oczekiwaniami (Może do czasu, gdy czytasz ten post, przestałby działać, ponieważ jest to darmowy hosting, więc spróbuj w kodzie i zobacz).

{% now 'Y' %}

Możesz go odwiedzić i zobaczyć w stopce, gdzie pokazałem bieżący rok za pomocą poniższego kodu (część CSS jest pominięta, więc użyj własnego).

<footer class="container-fluid" id="footer">
    <center>
        <p>
           &copy;
           {% now 'Y' %}, 
           PMT Boys hostel <br> 
           All rights reserved
        </p>
    </center>
</footer>

I wyświetla następujący wyśrodkowany tekst w stopce mojej witryny.

©2018, PMT Boys hostel 
All rights reserved

-2

W moim szablonie oprócz bieżącego roku potrzebowałem listy rozwijanej roku ważności karty kredytowej z 20 wartościami (począwszy od bieżącego roku). Te selectwartości musiały być 2 cyfry a wyświetlacz Struny 4 cyfry. Aby uniknąć złożonego kodu szablonu, napisałem ten prosty tag szablonu:

@register.filter
def add_current_year(int_value, digits=4):
    if digits == 2:
        return '%02d' % (int_value + datetime.datetime.now().year - 2000)
    return '%d' % (int_value + datetime.datetime.now().year)

I użył go w następujący sposób:

<select name="card_exp_year">
    {% for i in 'iiiiiiiiiiiiiiiiiiii' %}
    <option value="{{ forloop.counter0|add_current_year:2 }}">{{ forloop.counter0|add_current_year:4 }}</option>
    {% endfor %}
</select>

za długa odpowiedź!
mohammedgqudah

@mohammedqudah, zależy od Twoich potrzeb!
Cloud Artisans
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.