Skip to main content

django-slugify-processor

Custom slug processors for Django's slugify().

Python Package Build Status Docs Code Coverage License

Why

Django's slugifier is intentionally generic. That means terms such as C++ and C# both collapse to c, which can produce duplicate or unhelpful slugs. django-slugify-processor lets a project run its own small processors before Django performs the final slugification step.

With no SLUGIFY_PROCESSORS setting, the package behaves like Django's slugify().

Install

$ python -m pip install django-slugify-processor
$ uv add django-slugify-processor

Configure

Create a processor that accepts a string and returns a string:

def slugify_programming_languages(value: str) -> str:
    return value.replace("C++", "Cpp").replace("C#", "CSharp")

Register the processor's import string in Django settings:

SLUGIFY_PROCESSORS = [
    "myapp.slugify_processors.slugify_programming_languages",
]

Processors run in list order. The result then passes through Django's own slugify(), including its allow_unicode handling.

Use

Use the Python helper anywhere you would use Django's slugifier:

from django_slugify_processor.text import slugify

slugify("C++ Programming")  # "cpp-programming"

Load the template filter in a template that needs the same pipeline:

{% load slugify_processor %}
{{ "C++ Programming"|slugify }}

For projects that want every template to use this filter, install it as a template builtin:

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "OPTIONS": {
            "builtins": [
                "django_slugify_processor.templatetags.slugify_processor",
            ],
        },
    },
]

Model-field packages usually accept a slugify callback. For django-extensions:

from django.db import models
from django_extensions.db.fields import AutoSlugField
from django_slugify_processor.text import slugify


class Article(models.Model):
    title = models.CharField(max_length=255)
    slug = AutoSlugField(populate_from="title", slugify_function=slugify)

For django-autoslug, pass the same function to its slugify option.

Links

Development

$ git clone https://github.com/tony/django-slugify-processor.git
$ cd django-slugify-processor
$ uv sync --all-extras --dev
$ just test

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_slugify_processor-1.11.0.tar.gz (175.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_slugify_processor-1.11.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file django_slugify_processor-1.11.0.tar.gz.

File metadata

File hashes

Hashes for django_slugify_processor-1.11.0.tar.gz
Algorithm Hash digest
SHA256 d05bc374037808255763059414fef8a5d1fc4ff4345387a0b8a2a36097228fa2
MD5 81e0ab4f2dca54d1ea8a498f82b07635
BLAKE2b-256 50fa99667f2dd52cceaa54f391de985b09bd0c696927e6233396be27537bc345

See more details on using hashes here.

File details

Details for the file django_slugify_processor-1.11.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_slugify_processor-1.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10d953c4f97db128478dfc333c70d2a4c5e9d5f43c9fab18ec628454edae3310
MD5 e6eb7b1a31fd35557b93763b2be15790
BLAKE2b-256 655fa78d2cb9680a10dc9f5f7f0a5aca44b64590aa28d5935dbcdcb3d598b80d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page