Built-in Message Tags

The Django Messages Framework comes with a set of built-in message tags that allow you to categorize and style messages easily. Each of …

" />
×
   ❮   
PYTHON FOR DJANGO DJANGO FOR BEGINNERS DJANGO SPECIFICS PAYMENT INTEGRATION API BASICS Roadmap
     ❯   

MESSAGES FRAMEWORK

Built in message tags

Built-in Message Tags

The Django Messages Framework comes with a set of built-in message tags that allow you to categorize and style messages easily. Each of these tags corresponds to a message level, and they help determine how messages are rendered on the front end. By using these tags, you can customize the appearance of messages based on their importance or context, such as success, warning, or error messages.

Understanding Message Levels and Tags

Message levels define the severity or type of a message. Django provides five built-in message levels:

  • DEBUG - Used for debugging information.
  • INFO - General information for the user.
  • SUCCESS - Indicates a successful operation.
  • WARNING - Alerts the user about a situation that requires attention but is not critical.
  • ERROR - Indicates a failure or error that the user should be aware of.

Each of these levels is associated with a tag that can be used in templates to style the messages.

Default Built-in Tags

When you use the messages framework to send messages, each message automatically gets a tag that helps you identify its type. These tags can be used in your templates to apply specific styling. The default built-in tags are:

  • debug - For debug-level messages.
  • info - For informational messages.
  • success - For success notifications.
  • warning - For warnings.
  • error - For error alerts.

Example:

If you send a message with the messages.success function, it will automatically be assigned the success tag. This allows you to style it consistently across your site.

from django.contrib import messages
from django.shortcuts import redirect

def add_product(request):
    # Some code to add a product
    messages.success(request, 'Product added successfully!')
    return redirect('product_list')

Styling Messages Using Tags

In your template, you can use the built-in tags to apply CSS classes to style the messages. Here's an example of how to display messages with proper styling using Bootstrap:

<!-- Template code -->
{% if messages %}
    <div class="container mt-3">
        {% for message in messages %}
            <div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
                {{ message }}
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        {% endfor %}
    </div>
{% endif %}

In this example, the message.tags is used to determine which CSS class to apply. For example, if the message tag is success, the Bootstrap class alert-success will be applied, giving the message a green background.

Customizing Built-in Tags

Django allows you to customize the built-in tags if you need to change the default mappings. To do this, you can modify the MESSAGE_TAGS dictionary in your settings.py file:

# settings.py

from django.contrib.messages import constants as message_constants

MESSAGE_TAGS = {
    message_constants.DEBUG: 'debug',
    message_constants.INFO: 'info',
    message_constants.SUCCESS: 'success',
    message_constants.WARNING: 'warning',
    message_constants.ERROR: 'danger',  # Changed 'error' to 'danger'
}

In this example, the error tag is changed to danger, which might be more compatible with CSS frameworks like Bootstrap. This allows you to keep your tags aligned with the styles used by your front-end design.

Using Multiple Tags

Sometimes, you might want to apply multiple tags to a message for more granular styling or behavior. Although the messages framework does not directly support multiple tags, you can concatenate custom tags when adding a message:

messages.add_message(request, messages.WARNING, 'This is a critical warning!', extra_tags='critical')

In your template, you can now add logic to handle this custom tag:

<!-- Template code -->
{% if messages %}
    <div class="container mt-3">
        {% for message in messages %}
            <div class="alert alert-{{ message.tags }} {{ message.extra_tags }} alert-dismissible fade show" role="alert">
                {{ message }}
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        {% endfor %}
    </div>
{% endif %}

Conclusion

The built-in message tags in Django provide a straightforward way to manage and style feedback messages for users. By leveraging these tags, you can ensure consistent design and behavior across your application. Moreover, the flexibility to customize or extend these tags gives you the control needed to match your application's specific requirements. Understanding how these tags work and how to utilize them effectively can greatly enhance user communication and overall user experience.


Django-tutorial.dev is dedicated to providing beginner-friendly tutorials on Django development. Examples are simplified to enhance readability and ease of learning. Tutorials, references, and examples are continuously reviewed to ensure accuracy, but we cannot guarantee complete correctness of all content. By using Django-tutorial.dev, you agree to have read and accepted our terms of use , cookie policy and privacy policy.

© 2024 Nischal Lamichhane. All Rights Reserved.
Django-tutorial.dev is styled using Bootstrap 5.
And W3.CSS.