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.py
according 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 end
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 |