Как отобразить текущий год в шаблоне Django?

163

Что такое встроенный шаблон тега для динамического отображения текущего года. Как и в «2011», каким будет тег шаблона для отображения этого?

Вилли Нельсон
источник

Ответы:

325

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

Халдейский коричневый
источник
4
Напомним, что {% now%} не даст правильных результатов пользователям в другом часовом поясе, чем сервер.
Томаш Зелиньски
27
@Thomas Правда в некоторых случаях, однако, наиболее распространенный вариант использования, который я видел, когда хотел получить текущий год, - это уведомление об авторских правах, и на самом деле не так важно, чтобы он был идеальным в течение этих 24 часов, в то время как 1 января пробивается мир.
Эндофаг
2
YМежду прочим, этот код неверен, его нужно процитировать, как в ответе кабишек.
Эндофаг
Если бы я получал месяц, т.
Джош
1
@ Джош, полные документы - docs.djangoproject.com/en/dev/ref/templates/builtins/… , но вы ищете Fвместо этогоM
Haldean Brown
43

{% now 'Y' %} правильный синтаксис

cabhishek
источник
2

Я использовал следующее на своем сайте в Django 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
hygull
источник
-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, зависит от ваших потребностей!
Облачные Ремесленники