Як відобразити поточний рік у шаблоні Django?


163

Що таке вбудований тег шаблону для динамічного відображення цього року. Як і "2011", який би був тег шаблону для відображення цього?

Відповіді:


324

Повний тег для друку лише поточного року {% now "Y" %}. Зауважте, що Y має бути в лапках.


4
Для запису {% now%} не дасть належних результатів для користувачів у іншому часовому поясі, ніж сервер.
Томаш Зеліньський

27
@Thomas Правда для деяких випадків, однак, найпоширеніший випадок використання, який я бачив у бажанні поточного року, - це повідомлення про авторські права, і це дійсно не так важливо, щоб воно було ідеальним протягом цих 24 годин, тоді як 1 січня проходить шлях світ.
Ендофаг

2
до речі, що код невірний, його Yтреба цитувати як у відповіді cabishek.
Endophage

Якби я отримував місяць, тобто "М", як би я перейшов "Листопад" до "Листопад"
Джош

1
@Josh повними документами є docs.djangoproject.com/en/dev/ref/templates/builtins/… , але ви шукаєте FзамістьM
Haldean Brown



2

Я використовував наступне на своєму веб-сайті на базі Джанго http://pmtboyshostelraipur.pythonanywhere.com/, який працює нормально, як очікувалося (Можливо, до того моменту, коли ви читаєте це повідомлення, він би перестав працювати, тому що це безкоштовний хостинг, так просто спробуйте в коді і подивіться).

{% now 'Y' %}

Ви можете відвідати його і побачити його у нижній частині нижнього колонтитулу, де я відображав поточний рік за допомогою наведеного нижче коду (частина CSS опущена, тому використовуйте свій власний).

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

І він відображає наступний по центру текст у нижньому колонтитулі мого веб-сайту.

©2018, PMT Boys hostel 
All rights reserved

-2

У моєму шаблоні, крім поточного року, мені знадобилося спадання року закінчення терміну дії кредитної картки з 20 значеннями (починаючи з поточного року). Ці selectзначення повинні були бути 2 цифри , і на дисплеї струн 4 цифри. Щоб уникнути складного коду шаблону, я написав цей простий тег шаблону:

@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)

І використовували його наступним чином:

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

занадто довга відповідь!
mohammedgqudah

@mohammedqudah, залежить від ваших потреб!
Хмарні ремісники
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.