Skip to main content

Use Simple Icons brand icons in your Django and Jinja templates.

Project description

django-simple-icons

PyPI version Python versions CI

Use Simple Icons, 3,449 SVG brand icons, in your Django and Jinja templates. The icons ship inside the package, so there is no CDN to call and no static files to collect. Each icon renders as inline SVG that follows the surrounding text color.

Installation

Install with the extra matching your template engine:

python -m pip install 'django-simple-icons[django]'
python -m pip install 'django-simple-icons[jinja]'

The package itself has no runtime dependencies and needs Python 3.12 or later.

Django

Add the app to INSTALLED_APPS so the template tag library can be loaded:

INSTALLED_APPS = [
    ...,
    "django_simple_icons",
]

Then load the library and render an icon by its slug:

{% load simple_icons %}

{% simple_icon "django" %}

That produces a 24x24 inline SVG which inherits the current text color and is hidden from screen readers:

<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" aria-hidden="true"><path d="M11.146 0h3.924…"/></svg>

Sizing

size sets both width and height and defaults to 24:

{% simple_icon "django" size=48 %}

Pass size=None to omit both attributes, which is what you want when CSS classes control the size:

{% simple_icon "django" size=None class="h-6 w-6" %}

Color

Icons use fill="currentColor" by default, so they follow the surrounding text. Pass color="brand" to use the brand's official color, or any CSS color to set it directly:

{% simple_icon "django" color="brand" %}
{% simple_icon "django" color="#ff6600" %}

Extra attributes

Any other keyword argument becomes an attribute on the <svg> element, with underscores converted to dashes:

{% simple_icon "django" class="h-6 w-6 text-green-700" data_controller="icon" %}
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" aria-hidden="true" class="h-6 w-6 text-green-700" data-controller="icon"><path d="M11.146 0h3.924…"/></svg>

Values are escaped, so data_test="a < 2" renders as data-test="a &lt; 2".

Accessibility

Icons are decorative by default, so the upstream <title> is removed and aria-hidden="true" is set. An icon next to a text label needs nothing more.

For a standalone icon that carries meaning, pass title=True to keep the brand name as the accessible name, or pass a string to replace it:

{% simple_icon "django" title=True %}
{% simple_icon "django" title="Django framework" %}

Either form keeps role="img" and drops aria-hidden:

<svg role="img" viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><title>Django framework</title><path d="M11.146 0h3.924…"/></svg>

Jinja

Register the function as a global on your environment:

from django_simple_icons.jinja import simple_icon

environment.globals["simple_icon"] = simple_icon

Call it with the same arguments as the Django tag:

{{ simple_icon("django") }}
{{ simple_icon("django", size=48, color="brand") }}
{{ simple_icon("django", title="Django framework") }}

The result is a markupsafe.Markup, so it renders unescaped under autoescaping.

Because class is a reserved word in Python, spell it class_ when calling the function directly. The trailing underscore is stripped:

{{ simple_icon("django", class_="h-6 w-6") }}

Arguments

Argument Default Description
name required The icon slug, such as "django"
size 24 Sets width and height; None omits both
color "currentColor" Any CSS color, or "brand" for the brand's official color
title False True keeps the brand name, a string replaces it
**attrs none Extra attributes; underscores become dashes

Brand colors

get_brand_color returns a brand's official color, which is useful outside a template:

>>> from django_simple_icons import get_brand_color
>>> get_brand_color("django")
'#092E20'

Finding icon slugs

Slugs match the names on simpleicons.org, where you can search the full set. An unknown slug raises IconDoesNotExist with suggestions:

>>> from django_simple_icons import get_brand_color
>>> get_brand_color("djngo")
Traceback (most recent call last):
  ...
django_simple_icons.IconDoesNotExist: Icon 'djngo' does not exist. Did you mean: django, deno, fandango? Browse the available icons at https://simpleicons.org/

Supported versions

  • Python 3.12, 3.13 and 3.14
  • Django 5.2, 6.0 and 6.1 are tested. Django is declared as >=4.2 because the code uses nothing newer, but only the tested versions are supported.
  • Jinja2 2.8 and later

Versioning

The package version mirrors the bundled Simple Icons release, so version 16.26.0 contains Simple Icons 16.26.0. A fix to this package that ships no new icons appends a fourth segment, such as 16.26.0.1.

License

The code in this package is MIT licensed. The icons come from Simple Icons and are CC0-1.0.

Brand icons and names are trademarks of their respective owners. Using an icon does not imply endorsement, and some brands restrict how their marks may be used. Read the Simple Icons legal disclaimer before shipping an icon.

Project details


Download files

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

Source Distribution

django_simple_icons-16.26.0.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

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

django_simple_icons-16.26.0-py3-none-any.whl (2.6 MB view details)

Uploaded Python 3

File details

Details for the file django_simple_icons-16.26.0.tar.gz.

File metadata

  • Download URL: django_simple_icons-16.26.0.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for django_simple_icons-16.26.0.tar.gz
Algorithm Hash digest
SHA256 148b2b06f1484e9bfd25f945ddf5a1f54adf2d6899a25cadaf00db0f69d3ec66
MD5 e78edbbd5d59becc0135185492c5d285
BLAKE2b-256 c495cdeadc6298c4e8f2d8614e62be3c3c117e24c1e0408c7315035d51bcdc0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_simple_icons-16.26.0.tar.gz:

Publisher: main.yml on M4p4/django-simple-icons

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_simple_icons-16.26.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_simple_icons-16.26.0-py3-none-any.whl
Algorithm Hash digest
SHA256 28bec9d29c50929c925be15b3a93b27e3683bf6a8d9814610f5e20e7bc7b782f
MD5 b756dcb41549f603a85116edbaf0fa4e
BLAKE2b-256 d771dc8f53273d17ea07c60b3eaf7e6d819ce27f1612f3190122dd62b22b0bf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_simple_icons-16.26.0-py3-none-any.whl:

Publisher: main.yml on M4p4/django-simple-icons

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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