Skip to content

Latest commit

 

History

History
executable file
·
77 lines (56 loc) · 2.22 KB

README.md

File metadata and controls

executable file
·
77 lines (56 loc) · 2.22 KB

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