Pad integers with leading zeros (template filter)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@register.filter
def leading_zeros(value, desired_digits):
  """
  Given an integer, returns a string representation, padded with [desired_digits] zeros.
  """
  num_zeros = int(desired_digits) - len(str(value))
  padded_value = []
  while num_zeros >= 1:
    padded_value.append("0") 
    num_zeros = num_zeros - 1
  padded_value.append(str(value))
  return "".join(padded_value)

More like this

  1. Call a manager method on any model with a filter by coleifer 3 years, 11 months ago
  2. Template filters utils by marinho 6 years, 5 months ago
  3. slug_and_slash_to_dash - modified slugify for urls by bradmontgomery 3 years, 7 months ago
  4. Duplicating Template Tag by skarphace 2 years, 7 months ago
  5. table with n items per row using custom modulo tag by elgreengeeto 5 years, 4 months ago

Comments

kioopi (on January 11, 2008):

hey, doesn't

def leading_zeros(value, desired_digits):
    return str(value).zfill(desired_digits)

do the same thing?

#

jcroft (on January 11, 2008):

Probably. And I've also been informed that you can use the string formatting built-in template tag to accomplish this:

{{ var_containing_number|stringformat:"05d" }}

So, yeah -- good idea, but maybe not the best way to do it. I sort of suspected there was probably a better way. :)

#

laffuste (on March 5, 2013):

Or, without template tags:

padded_value = "%05d" % value

(for a 5 digit padded number)

#

jnns (on February 28, 2014):

Well, thanks anyway jcroft! I was looking for zero-padding for Django templates and now I know about at least two simple solutions.

#

(Forgotten your password?)