Icons for Django.
The goal of this project is to provide a single, simple template tag for rendering icons from any icon library in Django templates.
- Define your icons in your settings, with defaults for name, title and other attributes.
- Generate icons using template tags.
- Supports Font Awesome, Material, Bootstrap 3 and images.
- Add other libraries and custom icon sets by subclassing
IconRenderer.
Ready for production. Issues and pull requests welcome, see CONTRIBUTING.md.
This package requires a combination of Python and Django that is currently supported.
See "Supported Versions" on https://www.djangoproject.com/download/.
This package uses uv and just for local development.
The full documentation is at https://django-icons.readthedocs.io/en/latest/
-
Install using pip:
pip install django-icons -
Add to
INSTALLED_APPSin yoursettings.py:INSTALLED_APPS = ( # ... "django_icons", # ... )
-
Define an icon:
DJANGO_ICONS = { "ICONS": { "edit": {"name": "fa-solid fa-pencil"}, }, }
-
In your templates, load the
iconslibrary and use the{% icon %}tag. See example below.
{% load icons %}
<!-- Include your icon library. This example uses Font Awesome 6 through cdnjs. -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
{% icon 'edit' %}
This will generate the FontAwesome 6 pencil icon in regular style.
<i class="fa-solid fa-pencil"></i>Add extra classes and attributes to your predefined icon.
{% load icons %}
{% icon 'edit' extra_classes='fa-2xs my-extra-class' title='Update' %}
These will be added to the HTML output.
<i class="fa-solid fa-pencil fa-2xs my-extra-class" title="Update"></i>An example app is provided in the folder example. You can run the example app with this command:
just exampleIf you have found a bug or if you have a request for additional functionality, please use the issue tracker on GitHub.
https://github.com/zostera/django-icons/issues
You can use this under BSD-3-Clause. See LICENSE file for details.
Developed and maintained by Zostera.
Original author: Dylan Verheul.
Thanks to everybody that has contributed pull requests, ideas, issues, comments and kind words.
Please see AUTHORS for a list of contributors.
Our plans at Zostera for an icon tool originate in https://github.com/dyve/django-bootstrap3. We isolated this into a Font Awesome tool in https://github.com/zostera/django-fa. When using our own product, we felt that the icon tool provided little improvement over plain HTML. Also, Font Awesome's icon names did not match the intended function of the icon.
This is how we came to think of a library that:
- Took a limited number of arguments
- Converted those arguments into an icon
- Was able to support multiple icon libraries
- Could bind an icon definition to a preset name for easy reuse
- Could easily be extended by users
This is how we came to write and use django-icons.