Django Functions


Django Real-time Alerts: A Push Notification Guide

In today’s fast-paced digital era, real-time communication and instant updates are expected in many web applications. This is where push notifications come in handy. Push notifications are brief alerts sent to users in real-time, even when they are not actively using your application.

Django Real-time Alerts: A Push Notification Guide

For Django developers, integrating push notifications can seem like a daunting task. But fear not! In this blog post, we’ll explore how to set up and send push notifications in a Django project.

1. Why Push Notifications?

  1. Engagement: They keep users engaged by delivering timely updates.
  2. Retention: Regular updates can bring users back to your app.
  3. Immediate: They are seen immediately, ensuring users don’t miss out on important information.

2. Methods for Implementing Push Notifications in Django

There are two popular methods:

  1. Web Push Notifications: These are sent to users through their browsers.
  2. Mobile Push Notifications: These are sent to users’ mobile devices.

For this article, we’ll focus on Web Push Notifications using Django.

3. Tools and Libraries

To implement push notifications in Django, we’ll use:

  1. Django: Our primary web framework.
  2. django-push-notifications: A Django app for storing and managing devices.
  3. OneSignal: A popular push notification service.

4. Setting up Django with OneSignal

  1. Install django-push-notifications: 
pip install django-push-notifications
  1. Add `’push_notifications’` to `INSTALLED_APPS` in your ``.
  2. Run `python migrate` to create the necessary database tables.

4.1 Integrating OneSignal

  1. Go to [OneSignal]( and create an account.
  2. Create a new app and select “Web Push” as the platform.
  3. Choose your integration method. For Django, the typical choice is “Typical Site”.
  4. You’ll receive a unique App ID and API Key. Save them.

4.2 Configuring Django

In your ``, add:

    "ONE_SIGNAL_APP_ID": "Your OneSignal App ID",
    "ONE_SIGNAL_API_KEY": "Your OneSignal API Key",

4.3 Sending Notifications

Here’s a simple view that sends a notification:

from push_notifications.models import WebPushDevice
from push_notifications.webpush import webpush

def send_notification(request):
    device = WebPushDevice.objects.get(user=request.user)
    payload = {
        "head": "Greetings from Django!",
        "body": "Here's a real-time update just for you!",
    webpush(device, payload)
    return HttpResponse("Notification Sent!")

In this example, when a user accesses this view, they receive a notification. It’s basic but showcases the fundamental process.

4.4 Requesting Permission

Before sending notifications, you need the user’s permission. OneSignal provides a simple prompt for this.

In your base template:

<script src="" async=""></script>
    var OneSignal = window.OneSignal || [];
    OneSignal.push(function() {
            appId: "Your OneSignal App ID",

Now, users will see a prompt asking for permission when they visit your site.

4.5 Storing User Devices

When a user grants permission, their browser becomes a “device” you can send notifications to. With `django-push-notifications`, you can easily store and manage these:

from push_notifications.models import WebPushDevice

def store_device(request):
    subscription_data = request.POST.get("subscription")
    device = WebPushDevice.objects.create(
    return HttpResponse("Device Stored!")

Here, you’d collect the `subscription_data` from the frontend after the user grants permission.


Push notifications add a dynamic layer to web applications, allowing for real-time updates and increased user engagement. With Django and tools like OneSignal, the process becomes more accessible and straightforward.

The steps provided are a foundational guide. For advanced use-cases, such as sending targeted notifications or segmenting users, you might need to dig deeper into OneSignal’s documentation and consider additional Django configurations.

By embracing push notifications, you’re taking a step towards making your Django application more interactive and responsive to users’ needs. Happy coding!

Previously at
Flag Argentina
time icon
Experienced Full-stack Developer with a focus on Django, having 7 years of expertise. Worked on diverse projects, utilizing React, Python, Django, and more.