Skip to content

Django Web Monetization: Simple integration of the Web Monetization specification for Django applications.

License

Notifications You must be signed in to change notification settings

MartinM10/django-webmonetization

Repository files navigation

Django Web Monetization

PyPI version Python Versions Django Versions License

A Django package that makes it easy to integrate the Web Monetization specification into web applications. It enables developers to monetize their websites through real-time payments using the Interledger Protocol (ILP).

Features

  • 🚀 Middleware to automatically add the payment pointer to HTTP headers
  • 🎯 Template tag to insert the monetization meta tag in templates
  • ⚙️ Simple configuration through settings.py
  • 🔒 Compatible with Django 3.2+
  • 📦 Easy installation with pip

Resources

Installation

pip install django-webmonetization-MartinM10

Configuration

  1. Add 'django_webmonetization' to INSTALLED_APPS in settings.py:
INSTALLED_APPS = [
    ...
    'django_webmonetization',
]
  1. Configure your payment pointer in settings.py:
WEBMONETIZATION_PAYMENT_POINTER = '$ilp.example.com/your-payment-pointer'
  1. (Optional) Add the middleware to MIDDLEWARE in settings.py:
MIDDLEWARE = [
    ...
    'django_webmonetization.middleware.WebMonetizationMiddleware',
]

Usage

In Django Templates

{% load webmonetization %}
<!DOCTYPE html>
<html>
<head>
    {% webmonetization_meta %}
    <title>My Monetized Website</title>
</head>
<body>
    <h1>Welcome to my website</h1>
    <p>This site is monetized with Web Monetization</p>
</body>
</html>

HTTP Headers Verification

The middleware automatically adds the Web-Monetization-Pointer header to all HTTP responses. You can verify it with curl:

curl -I https://your-site.com

You should see something like:

HTTP/1.1 200 OK
...
Web-Monetization-Pointer: $ilp.example.com/your-payment-pointer

Integration Examples

1. Basic Monetization

# settings.py
WEBMONETIZATION_PAYMENT_POINTER = '$ilp.example.com/basic'

# views.py
from django.shortcuts import render

def home(request):
    return render(request, 'home.html')
<!-- templates/home.html -->
{% load webmonetization %}
<!DOCTYPE html>
<html>
<head>
    {% webmonetization_meta %}
</head>
<body>
    <h1>Home Page</h1>
</body>
</html>

Requirements

Main Dependencies

  • Python 3.7+
  • Django 3.2+

Development Dependencies

  • pytest>=7.0.0
  • pytest-cov>=4.0.0

Contributing

Contributions are welcome! Please feel free to submit a pull request.

License

MIT License - see the LICENSE file for details.

About

Django Web Monetization: Simple integration of the Web Monetization specification for Django applications.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages