Skip to main content

Django RLS

PyPI version PyPI - Downloads CI Documentation codecov Python Version Django Version License

A Django package that provides PostgreSQL Row Level Security (RLS) capabilities at the database level.

See CONTRIBUTING.md.

Security

See SECURITY.md.

Features

  • 🔒 Database-level Row Level Security using PostgreSQL RLS
  • 🏢 Tenant-based and user-based policies
  • 🐍 Pythonic Policies: Define policies using standard Django Q objects
  • 🌳 Hierarchical RLS: Support for recursive CTEs and nested organizations
  • Context Processors: Inject dynamic context variables (e.g. user IP, session data)
  • 🔧 Django 5.0, 5.1, 5.2 (LTS), and 6.0 support
  • 🧪 Comprehensive test coverage
  • 📖 Extensible policy system
  • ⚡ Performance optimized

Quick Start

from django.db import models
from django.db.models import Q
from django_rls.models import RLSModel
from django_rls.policies import ModelPolicy, RLS

class Project(RLSModel):
    name = models.CharField(max_length=100)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    is_public = models.BooleanField(default=False)

    class Meta:
        rls_policies = [
            # Pythonic Policy: Owner OR Public
            ModelPolicy(
                'access_policy',
                filters=Q(owner=RLS.user_id()) | Q(is_public=True)
            ),
        ]

Installation

Install from PyPI:

pip install django-rls

Or install the latest development version:

pip install git+https://github.com/kdpisda/django-rls.git

Requirements

  • Python 3.10, 3.11, 3.12, or 3.13
  • Django 5.0, 5.1, 5.2 (LTS), or 6.0
  • PostgreSQL 12 or higher (tested with PostgreSQL 17)

Add to your Django settings:

INSTALLED_APPS = [
    # ... your apps
    'django_rls',
]

MIDDLEWARE = [
    # ... your middleware
    'django_rls.middleware.RLSContextMiddleware',
]

Documentation

Full documentation is available at django-rls.com

Quick Links

License

BSD 3-Clause License - see LICENSE file for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_rls-2.0.1.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_rls-2.0.1-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file django_rls-2.0.1.tar.gz.

File metadata

  • Download URL: django_rls-2.0.1.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for django_rls-2.0.1.tar.gz
Algorithm Hash digest
SHA256 d15f7b27012a61fbafc983e66105c1550b56cbc39b848e6190ef40d2431f5ad3
MD5 a0dfded1645c14df3360405f85629867
BLAKE2b-256 a83d7f4f7c9928c4a0f3045e017bdc0c8f9bd5dfbc3a91c95e535f8f7f0bd7de

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_rls-2.0.1.tar.gz:

Publisher: release.yml on kdpisda/django-rls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_rls-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: django_rls-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for django_rls-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ec92524fcd6b2931d453f6ad21189c11f5238563fc6c3113f587734b4252b36
MD5 30c8ab5f8818404c484d853aaf8002dd
BLAKE2b-256 1281d8bfe6624405ed04f538a915c44b5408097c8f5936df78b47d65c0fda4ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_rls-2.0.1-py3-none-any.whl:

Publisher: release.yml on kdpisda/django-rls

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page