Slugify удаляет все начальные пробелы, вам нужно переписать это как пользовательский тег шаблона, чтобы получить поведение, к которому вы стремитесь.
Оригинальный код фильтра выглядит следующим образом
def slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
and converts spaces to hyphens.
"""
import unicodedata
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())
return mark_safe(re.sub('[-\s]+', '-', value))
, который заменяет "некоторую строку" на "некоторую строку", убивая лишние пробелы.
Вы можете изменить это так:
def new_slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
and converts spaces to hyphens, does not remove leading whitespace.
"""
import unicodedata
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())
return mark_safe(re.sub('[-\s]', '-', value))
Что приведет к следующему поведению:
"Some String here" в "Some - string-here"
У вас все еще могут быть проблемы, как уже упоминалось ранее, с тем, как html обрабатывает лишние пробелы, вам придется написать еще один фильтр удаления ошибок.