Sending notifications in Django has always been a complex subject. Django Magic Notifier solves this by providing only one function notify(). The library [will] support sending notifications via email, sms and push notifications.
- Send emails
- Send sms, TWILIO support
- Send push notifications
- Support templates
- Simple API
- Support files
- Support multiple gateways
- Extensible
- Support MJML
pip install --upgrade django-magic-notifier
If you have already configured SMTP EMAIL SETTINGS in django settings then can ignore this step. Else add a NOTIFIER dict in your settings like this
NOTIFIER = {
"EMAIL": {
"default": {
"HOST": "localhost",
"PORT": 587,
"USE_TLS": True,
"USE_SSL": False,
"USER": "root@localhost",
"FROM": "Root <root@localhost>",
"PASSWORD": "********",
"CLIENT": "magic_notifier.email_clients.django_email.DjangoEmailClient",
}
},
"USER_FROM_WS_TOKEN_FUNCTION": 'magic_notifier.utils.get_user_from_ws_token'
}
Create a folder named notifier in one of app's templates dir. In this folder create another folder named my_template then create your base templates in this folder. Example:
app_name/templates/notifier/my_template/email.html
{% extends "base_notifier/email.html" %}
{% block content %}
<tr>
<td><p>Hello {{ user.email }}
</td>
</tr>
{% endblock %}
app_name/templates/notifier/my_template/email.txt
{% extends "base_notifier/email.txt" %}
{% block content %}
Hello {{ user.email }}
{% endblock %}
As you can see, the user to whom the notification goes is automatically added
in the template's context. To avoid any clash don't send the key 'user'
in the context of the notifiy() function presented below.
Note that it is DMN (Django Magic Notifier) that has the base_notifier template.
To send a notification via email do
from magic_notifier.notifier import notify
# send an email from direct string
user = User(email="testuser@localhost", username="testuser")
subject = "Test magic notifier"
notify(["email"], subject, [user], final_message="Nice if you get this")
# send an email from a template
user = User(email="testuser@localhost", username="testuser")
subject = "Test magic notifier"
notify(["email"], subject, [user], template='hello')
# send a sms from a template
user = User(email="testuser@localhost", username="testuser")
subject = "Test magic notifier"
notify(["sms"], subject, [user], template='hello')
# send a notification via email and sms from a template
user = User(email="testuser@localhost", username="testuser")
subject = "Test magic notifier"
notify(["email", "sms"], subject, [user], template='hello')
https://django-magic-notifier.readthedocs.io/en/latest/index.html
- Generate full documentation
- Translate documentation
Contribution are welcome.
As per the license, feel free to use the library as you want.