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ć?

Willy Nelson
źródło

Odpowiedzi:

324

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

Haldean Brown
źródło
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
43

{% now 'Y' %} to poprawna składnia

cabhishek
źródło
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
kadłub
źródło
-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>
Cloud Artisans
źródło
za długa odpowiedź!
mohammedgqudah
@mohammedqudah, zależy od Twoich potrzeb!
Cloud Artisans