5

I am trying this

from django.utils.text import slugify

In [8]: mystr = "This is john"

In [9]: slugify(mystr)

and i am getting this error

TypeError: must be unicode, not str

if i use this

from django.template.defaultfilters import slugify then it works but it does not chnage underscores to hyphens and if i have dots it simple removes it

fdsgds
  • 129
  • 6

1 Answers1

5

This is because slugify() expects a unicode object.

The easiest way to solve it is passing the string as a unicode object

mystr = u'This is John'

or

mystr = unicode('This is John')
>> u'This is John'
Henrik Andersson
  • 45,354
  • 16
  • 98
  • 92
  • 2
    For future searchers... this answer is only relevant in Python 2. There is no unicode() in Python 3 and all strings are Unicode in Python 3. – Patrick Feb 02 '18 at 16:36