Skip to content

A library that allows IP restrictions for views/endpoints in Django REST framework.

License

Notifications You must be signed in to change notification settings

anexia/drf-ip-restrictions

Repository files navigation

DRF IP Restrictions

PyPI version Run linter and tests Codecov

A library that allows IP restrictions for views/endpoints in Django REST framework.

Installation

  1. Install using pip:
pip install drf-ip-restrictions
  1. Add the library to your INSTALLED_APPS list.
INSTALLED_APPS = [
    ...
    'drf_ip_restrictions',
    ...
]
  1. Override the allowed IP addresses your settings.py according to your needs:
# within settings.py

DRF_IP_RESTRICTION_SETTINGS = {
    "ALLOWED_IP_LIST": ["127.0.0.1"],
}

Usage

Add the AllowedIpList class to any views / endpoints that should only provide access for the configured IP addresses, e.g. to restrict a view set:

# within views.py

class MyViewSet(viewsets.ModelViewSet):
    permission_classes = (AllowedIpList,)
    ...

or to restrict only a single action:

# within views.py

class MyViewSet(viewsets.ModelViewSet):
    ...
    
    @action(
        detail=False,
        methods=["get"],
        http_method_names=["get"],
        authentication_classes=[],
        permission_classes=[AllowedIpList],  # <-- this is the important part for IP restrictions to work
        url_path=r"my-method",
    )
    def my_method(self, request, *args, **kwargs):
        # do stuff and return rest_framework.response.Response in the end

Django Compatibility Matrix

If your project uses an older verison of Django or Django Rest Framework, you can choose an older version of this project.

This Project Python Version Django Version Django Rest Framework
1.1.* 3.9, 3.10, 3.11, 3.12. 3.13 4.2, 5.0, 5.1 3.12, 3.13, 3.14, 3.15
1.0.* 3.7, 3.8, 3.9, 3.10 3.2, 4.0 3.12, 3.13

About

A library that allows IP restrictions for views/endpoints in Django REST framework.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages