A set of tools to help simplify your Django templates
$ pip install django-template-simplifyThen add the app into INSTALLED_APPS in settings.py
INSTALLED_APPS = [
...,
'template_simplify',
]dom_id is a helper method that returns a unique DOM ID based on the object's class name and primary key.
{% load template_simplify %}
{% dom_id instance %} -> task_1
{% dom_id instance 'detail' %} -> detail_task_1
{% dom_id Task %} -> new_taskdom_idfirst argument can be string, instance or Model classdom_idsecond argument is optional string that will be used asprefix.
You can also use it in your Django view code.
from template_simplify import dom_id
target = dom_id(instance, "detail_container")We can say goodbye to id="task-{{ task.pk }}" and use id="{% dom_id task %}" instead.
The benefit is, it simplified the DOM ID generation in Python and Django template, and avoid typo error in many cases.
Inspired by JS classnames and Rails class_names
class_names can help conditionally render css classes
{% load template_simplify %}
<div class="{% class_names test1=True 'test2' ring-slate-900/5=True already-sign-in=request.user.is_authenticated %}"></div>
'<div class="test1 test2 ring-slate-900/5 dark:bg-slate-800 %}"></div>'It can work well with TailwindCSS's some special char such as / and :
Below is an example of if else
<div class="{% class_names active=request.user.is_authenticated inactive=!request.user.is_authenticated %}"></div>- Please note
!can be used just like Javascript. - So if user is not authenticated in this case, we would get
<div class="inactive"></div>
This can help make css logic more organized.