Django provides a convenient way to display messages to users using its messages framework. Messages are typically used to provide feedback to users after a certain action has been performed, such as successfully submitting a form or encountering an error.
Setting Up
Firstly, make sure you have a Django project and application set up. If not, you can create one using:
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
Next, add 'django.contrib.messages' to the INSTALLED_APPS list in your project's settings:
# myproject/settings.py
INSTALLED_APPS = [
# other apps
'django.contrib.messages',
]
Also, ensure you have the MessageMiddleware included in your
MIDDLEWARE:
# myproject/settings.py
MIDDLEWARE = [
# other middleware
'django.contrib.messages.middleware.MessageMiddleware',
]
Don't forget to include the {% messages %}
template tag in your base template where you want messages to be displayed:
<!-- myapp/templates/base.html -->
{% block content %}
{% block messages %}
{% messages %}
{% endblock messages %}
<!-- other content -->
{% endblock content %}
Displaying Messages
Now, let's see how to display messages in your views. In your views, you can use the messages module:
# myapp/views.py
from django.contrib import messages
from django.shortcuts import render, redirect
def my_view(request):
messages.success(request, 'This is a success message.')
messages.error(request, 'An error occurred.')
messages.warning(request, 'This is a warning.')
messages.info(request, 'Just an informational message.')
return render(request, 'myapp/my_template.html')
These messages are stored in the request object and will be available until the end of the current request-response cycle.
Displaying Messages in Templates
To display these messages in your template, you can use the {% messages %}
template tag. For example:
<!-- myapp/templates/myapp/my_template.html -->
{% block content %}
{% block messages %}
{% messages %}
{% endblock messages %}
<!-- other content -->
{% endblock content %}
This tag will render the messages in a styled format, with different styles for each message level (success, error, warning, info).
Customizing Message Levels
Django messages support several levels: DEBUG, INFO, SUCCESS, WARNING, and ERROR. You can customize the appearance of messages by using specific tags in your template
<!-- myapp/templates/myapp/my_template.html -->
{% block content %}
{% block messages %}
{% messages %}
{% endblock messages %}
{% messages_debug %}
{% messages_info %}
{% messages_success %}
{% messages_warning %}
{% messages_error %}
<!-- other content -->
{% endblock content %}
These tags will render messages of the corresponding levels.
Conclusion
The Django messages framework is a powerful tool for providing feedback to users. Whether you want to display success messages, errors, or warnings, Django makes it easy to implement in a clean and organized way. Happy coding!
Top comments (1)
Hi Ahmad, nice article!
Just to add, the article could show some screenshots showcasing what the
message
module output actually looks like in the browser.