This is to be used as a template filter. See django documentation for adding custom filters.
Example of use:
name = "bart simpson"
{{ name|cap }}
will convert 'name' to "Bart Simpson"
It works on space-separated names, as well as the following:
- converts "mcfly" to "McFly";
- converts "o'neill" to "O'Neill";
- converts "barker-bradley" to "Barker-Bradley"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @register.filter
def cap(value):
namelist = value.split(' ')
fixed = ''
for name in namelist:
name = name.lower()
# fixes mcdunnough
if name.startswith('mc'):
sub = name.split('mc')
name = "Mc" + sub[1].capitalize()
# fixes "o'neill"
elif name.startswith('o\''):
sub = name.split('o\'')
name = "O'" + sub[1].capitalize()
else: name = name.capitalize()
nlist = name.split('-')
for n in nlist:
if len(n) > 1:
up = n[0].upper()
old = "-%s" % (n[0],)
new = "-%s" % (up,)
name = name.replace(old,new)
fixed = fixed + " " + name
return fixed
|
More like this
- LazyPrimaryKeyRelatedField by LLyaudet 2 days, 19 hours ago
- CacheInDictManager by LLyaudet 3 days, 2 hours ago
- MYSQL Full Text Expression by Bidaya0 3 days, 20 hours ago
- Custom model manager chaining (Python 3 re-write) by Spotted1270 1 week, 3 days ago
- Django Standard API Response Middleware for DRF for modern frontend easy usage by Denactive 3 weeks, 4 days ago
Comments
Thanks, this is much more useful than Pythons own capitalization methods!
#
Please login first before commenting.