Come visualizzare l'anno corrente in un modello Django?


163

Qual è il tag modello integrato per visualizzare l'anno in modo dinamico. Come "2011" quale sarebbe il tag modello per visualizzarlo?

Risposte:


325

Il tag completo da stampare solo per l'anno in corso è {% now "Y" %}. Nota che la Y deve essere tra virgolette.


4
Per la cronaca, {% now%} non fornirà risultati adeguati per gli utenti in fusi orari diversi rispetto al server.
— Tomasz Zieliński,

27
Thomas True in alcuni casi, tuttavia, il caso d'uso più comune che ho visto per volere l'anno in corso è un avviso sul copyright, e non è poi così importante che sia perfetto per quelle 24 ore mentre il 1 ° gennaio si fa strada il mondo.
— Endofago il

2
per inciso, quel codice è sbagliato, il Ydeve essere citato come nella risposta di cabishek.
— Endofago

Se avessi ricevuto il mese, ad esempio "M", come avrei portato "Nov" a "Novembre"
— Josh,

1
@Josh i documenti completi sono docs.djangoproject.com/en/dev/ref/templates/builtins/… , ma stai cercando Finvece diM
— Haldean Brown,



2

Ho usato quanto segue nel mio sito web basato su Django http://pmtboyshostelraipur.pythonanywhere.com/ che funziona bene come previsto (Forse, quando leggi questo post, avrebbe smesso di funzionare perché è un hosting gratuito quindi solo prova nel codice e vedi).

{% now 'Y' %}

Puoi visitare e vederlo nella parte a piè di pagina in cui ho visualizzato l'anno corrente utilizzando il codice seguente (la parte CSS è stata omessa, quindi usa la tua).

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

E sta visualizzando il seguente testo centrato nel piè di pagina del mio sito Web.

©2018, PMT Boys hostel 
All rights reserved

-2

Nel mio modello, a parte l'anno in corso, avevo bisogno di un menu a discesa per l'anno di scadenza della carta di credito con 20 valori (a partire dall'anno in corso). I selectvalori devono essere di 2 cifre e le stringhe di visualizzazione di 4 cifre. Per evitare un codice modello complesso, ho scritto questo semplice tag modello:

@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 lo ha usato nel modo seguente:

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

risposta troppo lunga!
— Mohammedgqudah,

@mohammedqudah, dipende dalle tue esigenze!
— Cloud Artisans,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.