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.0.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.0-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for django_rls-2.0.0.tar.gz
Algorithm Hash digest
SHA256 d753e3d92a870910a5a443a76ccc8f79905218f438a04bea5720f06558295311
MD5 54f3d438b2befbde3943db1a34a446d1
BLAKE2b-256 31bfd991f4f63dbdfaada0633d91711536ff0e2325cc8ac33e3deca02e238796

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_rls-2.0.0.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.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for django_rls-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b023827c62936878fe2c106e3c084b9a7b0680f7020511bc66abce2fd7cb1e7
MD5 7ad08a91fd8e7f8d07e970e08eaf8622
BLAKE2b-256 baab8baf8140e1053debf869958beef3bf21b7fcb61048e182ecbaf92ce8585c

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_rls-2.0.0-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