A library that allows IP restrictions for views/endpoints in Django REST framework.
- Install using pip:
pip install drf-ip-restrictions- Add the library to your INSTALLED_APPS list.
INSTALLED_APPS = [
...
'drf_ip_restrictions',
...
]- Override the allowed IP addresses your
settings.pyaccording to your needs:
# within settings.py
DRF_IP_RESTRICTION_SETTINGS = {
"ALLOWED_IP_LIST": ["127.0.0.1"],
}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 endIf 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 |