Como exibir o ano atual em um modelo do Django?

163

O que é a tag de modelo embutida para exibir o ano atual dinamicamente. Como "2011", qual seria a tag do modelo para exibir isso?

Willy Nelson
fonte

Respostas:

324

A tag completa a ser impressa apenas no ano atual é {% now "Y" %}. Observe que o Y deve estar entre aspas.

Castanho Haldean
fonte
4
Para o registro, {% now%} não fornecerá resultados adequados para usuários com fuso horário diferente do servidor.
Tomasz Zieliński
27
@Thomas True Em alguns casos, no entanto, o caso de uso mais comum que desejo para o ano atual é um aviso de direitos autorais, e não é tão importante que seja perfeito para essas 24 horas enquanto o dia 1º de janeiro é o caminho o mundo.
Endophage
2
aliás, esse código está errado, Ydeve ser citado como na resposta de cabishek.
Endofagia 3/11
Se eu estivesse recebendo o mês, ou seja, "M", como eu faria "Nov" para "November"
Josh
1
@ Josh os documentos completos estão docs.djangoproject.com/en/dev/ref/templates/builtins/... , mas você está procurando Fem vez deM
Caldeus Brown
43

{% now 'Y' %} é a sintaxe correta

cabhishek
fonte
2

Eu usei o seguinte no meu site do Django http://pmtboyshostelraipur.pythonanywhere.com/, que funciona bem como esperado (talvez, no momento em que você está lendo este post, ele pare de funcionar porque é uma hospedagem gratuita, apenas tente no código e veja).

{% now 'Y' %}

Você pode visitá-lo e vê-lo na parte do rodapé onde eu mostrei o ano atual usando o código abaixo (a parte CSS é omitida, use o seu próprio).

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

E está exibindo o seguinte texto centralizado no rodapé do meu site.

©2018, PMT Boys hostel 
All rights reserved
hygull
fonte
-2

No meu modelo, além do ano atual, eu precisava de uma lista suspensa do ano de vencimento do cartão de crédito com 20 valores (começando no ano atual). Os selectvalores precisavam ter 2 dígitos e a seqüência de caracteres 4 dígitos. Para evitar código de modelo complexo, escrevi esta tag de modelo simples:

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

E usei da seguinte maneira:

<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>
Artesãos da nuvem
fonte
resposta muito longa!
precisa
@mohammedqudah, depende de suas necessidades!
Cloud Artisans