如何在 Django 中使用 URL 包装器来限制 IP 访问?
在 Django 中,可以使用 URL 包装器来限制 IP 访问。这可以通过定义一个自定义的 URL 包装器来实现。以下是一个简单的示例:
from django.http import HttpResponseForbidden def limit_ip(view_func): def wrapper(request, *args, **kwargs): allowed_ips = ['127.0.0.1'] # 允许访问的 IP 列表 ip = request.META.get('REMOTE_ADDR') if ip not in allowed_ips: return HttpResponseForbidden('Forbidden') return view_func(request, *args, **kwargs) return wrapper
这个包装器接受一个视图函数作为参数,并返回一个新的包装器函数。在新的包装器函数中,先定义了一个允许访问的 IP 列表,然后获取当前请求的 IP,如果 IP 不在允许访问的列表中,则返回一个 403 禁止访问的响应,否则执行原始的视图函数。
要在视图函数中使用这个包装器,只需要在 URL 配置中将其包装在视图函数外面即可:
from django.urls import path from .views import my_view from .decorators import limit_ip urlpatterns = [ path('my-url/', limit_ip(my_view), name='my_view'), ]
这个示例演示了如何限制只有 IP 地址为 '127.0.0.1'
的客户端才能访问 my_view
视图函数。你可以在 allowed_ips
列表中添加其他 IP 地址,或者从配置文件中加载这些 IP 地址。
相关文章