开发者

How to display month name by number?

I have a number represented month and i want to replace it with month name, date filter not working:

{{ monthnumber|date:"M" }}

开发者_如何学JAVAI want to place two links - next month and previous month, but i have only number of month.

How to do it?


You'll need a custom template filter to convert the number into a month name. Pretty simple if you use the calendar module from the standard library:

import calendar

@register.filter
def month_name(month_number):
    return calendar.month_name[month_number]

Usage example: {{ 5|month_name }} will output May


you should use :

{{ datetimeobj|date:"F" }}

read this


Well, it's not :

{{ monthnumber|date:"M" }}

You should try this :

{{ datetimeobj|date:"M" }}


Just in case you do not want to format a date object passed into a Django template (like the other answers clearly show), but rather you'd prefer to simply get the current date's month number; here is the built-in tag you can use to do that:

{% now "n" %}

From the docs: https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#now

Here are the built in date tags you can use with {% now [""] %}

https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#date


The version of the custom filter with calendar didn't work for me (it takes string as a argument), so I created a different version of the filter with datetime.datetime.strptime, that takes int as a argument:

import datetime
from django import template

register = template.Library()

@register.filter
def int_to_month_name(month_number):
    datetime_object = datetime.datetime.strptime(month_number, "%m")
    full_month_name = datetime_object.strftime("%B")
    return full_month_name

Usage: {{ month_number|int_to_month_name}}

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜