pip install django-simple-notification
from notifications.handlers import send_message
send_message('Mahmoud Liked your post', user, 'post_like')
Explain
# function interface
send_message(message:str, user:User, type:str)
# logic behind it
message: the text message to be sent to the user
user: an instance of User model (the one who will recieve the notification)
type: is a notification tag (you should create different types in your system for different events)
notifications/all/
:GET : get all the notifications
notifications/mark/
:PUT : mark all notifications as read
notifications/unread/
:GET: get all unread notifications
Note: make sure that django channels is up and runnnig and also you django serves under ASGI check this url to configure django channels in your project
in settings.py
INSTALLED_APPS = [
...
'channels', # django channels needs to be installed
'notifications', # our package
...
]
# Note: this step is optional
SIMPLE_NOTIFICATION_SETTINGS = {
'receive_handler_path': 'custom_module.custom_py_file.custom_receive_handler',
}
in urls.py
path('api/v1/notifications/', include('notifications.urls')),
in asgi.py
from notifications import routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo_project.settings')
application = ProtocolTypeRouter({
'http': get_asgi_application(),
'websocket': AuthMiddlewareStack(
URLRouter(
routing.websocket_urlpatterns
)
),
})
# or if you have other routing files you can do this
application = ProtocolTypeRouter({
'http': get_asgi_application(),
'websocket': AuthMiddlewareStack(
URLRouter([
*routing.websocket_urlpatterns,
*other_routing1.websocket_urlpatterns,
*other_routing2.websocket_urlpatterns,
])
),
})
run make migrate:
python manage.py migrate