从Tastypie的api电话中读取IP地址?

时间:2014-08-13 12:24:44

标签: python python-3.x tastypie

在我的代码中,我想知道进行api调用的客户端的ip地址。有什么办法吗?

例如:假设某个人发起了这个api调用,如"http://server_url/api/v1/range/setup/"

在服务器的api.py中我可以读取他机器的IP地址吗?

1 个答案:

答案 0 :(得分:1)

我曾经使用过这种方法,它应该从你的请求元数据中返回IP地址:

def getClientIPaddress(request):
    http_x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if http_x_forwarded_for:
        ip_address = http_x_forwarded_for.split(',')[0]
    else:
        ip_address = request.META.get('REMOTE_ADDR')
    return ip_address

然后,您可以在处理API调用时调用getClientIPaddress方法,例如:

class YourResource(ModelResource):
    class Meta:
        #meta code here

    def obj_create(self, bundle, **kwargs):
        ip = getClientIPaddress(bundle.request)
        #your code here

    def obj_get_list(self, bundle, **kwargs):
        ip = getClientIPaddress(bundle.request)
        #your code here