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?

Respostas:


324

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


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



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

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

resposta muito longa!
precisa

@mohammedqudah, depende de suas necessidades!
Cloud Artisans
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.