Skip to content

A simple Django template tag that combines the functionality of the `with` and `if` tags

License

Notifications You must be signed in to change notification settings

ehamiter/django-whiff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-whiff

django-whiff is a simple Django template tag that combines the functionality of the with and if tags, inspired by the Python walrus operator (:=). It allows you to assign a variable and immediately check if it is truthy, rendering content if it is.

Example

{% load whiff %}

  {% whiff current_user as user %}
    <h1>Welcome back, {{ user.first_name }} {{ user.last_name }}!</h1>
    <p>Your last login was on {{ user.last_login|date:"F j, Y, g:i a" }}.</p>

      <h2>Your Profile</h2>
      <ul>
        <li>Email:  {{ user.email }}</li>
        <li>Joined: {{ user.date_joined|date:"F j, Y" }}</li>
        <li>Bio:    {{ user.bio }}</li>
      </ul>
  {% endwhiff %}

Features

  • Combines with and if in a single template tag.
  • Simplifies template logic by reducing the need for nested tags.
  • Easy to use and integrate into existing Django projects.

Caveats

  • Not a great contender to replace multiple pipes or conditions in an existing template tag

Installation

You can install django-whiff via pip:

pip install django-whiff

Usage

Once installed, add django_whiff to your INSTALLED_APPS in your Django settings:

INSTALLED_APPS = [
    ...
    'django_whiff',
    ...
]

Note the underscore, not hyphen.

How It Works

  • The whiff tag assigns the value of some_obj to obj.
  • If some_obj is truthy, the content inside the whiff block is rendered.
  • If some_obj is falsey, nothing is rendered.

Tests

python -m unittest discover -s tests

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue on the GitHub repository.

Acknowledgements

Inspired by the Python walrus operator (:=) and the need for cleaner, more concise template logic.

About

A simple Django template tag that combines the functionality of the `with` and `if` tags

Topics

Resources

License

Stars

Watchers

Forks

Languages