Note_Tech

All technological notes.


Project maintained by simonangel-fong Hosted on GitHub Pages — Theme by mattgraham

Django - Messages

Back


Enabling messages


Message

Message levels

Constant Purpose Value
DEBUG Development-related messages, will be ignored (or removed) in a production deployment 10
INFO Informational messages for the user 20
SUCCESS An action was successful 25
WARNING A failure did not occur but may be imminent 30
ERROR An action was not successful or some other failure occurred 40

Message tags

Level Constant Tag
DEBUG debug
INFO info
SUCCESS success
WARNING warning
ERROR error
from django.contrib.messages import constants as messages

MESSAGE_TAGS = {
    messages.INFO: "",
    50: "critical",
}

Message class

Attributes Description
message The actual text of the message
level An integer describing the type of the message.
level_tag The string representation of the level.
extra_tags A string containing custom tags for this message, separated by spaces.
tags A string combining all the message’s tags separated by spaces.

Usage

Template

// if messages \\
<ul class="messages">
    // for message in messages \\
    <li // if message.tags \\ class="__ message.tags __"// endif \\>__ message __</li>
    // endfor \\
</ul>
// endif \\
// if message.level == DEFAULT_MESSAGE_LEVELS.ERROR \\Important: // endif \\

Views

from django.contrib import messages

# using add_message
messages.add_message(request, messages.INFO, "Hello world.")    

# shortcut
messages.debug(request, "%s SQL statements were executed." % count)
messages.info(request, "Three credits remain in your account.")
messages.success(request, "Profile details updated.")
messages.warning(request, "Your account expires in three days.")
messages.error(request, "Document deleted.")
from django.contrib.messages import get_messages

storage = get_messages(request)
for message in storage:
    do_something_with_the_message(message)
messages.add_message(request, messages.INFO, "Over 9000!", extra_tags="dragonball")
messages.error(request, "Email box full", extra_tags="email")

Class-based views: SuccessMessageMixin

from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreateView(SuccessMessageMixin, CreateView):
    model = Author
    success_url = "/success/"
    success_message = "%(name)s was created successfully"   # %(field_name)s syntax.

TOP