关于精灵获取IP地址的问题
Question about getting an IP address in Genie
我是 Django 的新手,我从专家那里得到了这段代码,但我不知道它是如何工作的,也不知道谁能解释它是如何工作的?
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
我认为值得一提的是您的代码片段可能来自此 discussion。以防人们想阅读整个答案。
代码后跟解释:
def get_client_ip(request):
使用输入 request
启动函数 get_client_ip
。
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
HTTP_X_FORWARDED_FOR is a field of the HTTP request header 你存储在变量 x_forwarded_for
.
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
变量 x_forwarded_for
是以逗号分隔的 IP 地址列表(示例如下)。
203.0.113.195, 70.41.3.18, 150.172.238.178
因为您只对第一个 IP 地址感兴趣,所以您用逗号 .split(',')
分隔此字符串,并且只取第一个 object [0]
.
else:
ip = request.META.get('REMOTE_ADDR')
如果变量 x_forwarded_for
为空,那么您尝试通过从 REMOTE_ADDR 字段中获取数据来获取用户的 IP 地址42=]HTTP 请求 header 因为这是您的第二个最佳选择。
return ip
在函数的末尾,您想要 return IP 地址,以便您可以在您的应用程序中使用它。
我是 Django 的新手,我从专家那里得到了这段代码,但我不知道它是如何工作的,也不知道谁能解释它是如何工作的?
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
我认为值得一提的是您的代码片段可能来自此 discussion。以防人们想阅读整个答案。
代码后跟解释:
def get_client_ip(request):
使用输入 request
启动函数 get_client_ip
。
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
HTTP_X_FORWARDED_FOR is a field of the HTTP request header 你存储在变量 x_forwarded_for
.
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
变量 x_forwarded_for
是以逗号分隔的 IP 地址列表(示例如下)。
203.0.113.195, 70.41.3.18, 150.172.238.178
因为您只对第一个 IP 地址感兴趣,所以您用逗号 .split(',')
分隔此字符串,并且只取第一个 object [0]
.
else:
ip = request.META.get('REMOTE_ADDR')
如果变量 x_forwarded_for
为空,那么您尝试通过从 REMOTE_ADDR 字段中获取数据来获取用户的 IP 地址42=]HTTP 请求 header 因为这是您的第二个最佳选择。
return ip
在函数的末尾,您想要 return IP 地址,以便您可以在您的应用程序中使用它。