首先,需求分析:
1、拿到客户端IP
2、通过IP拿到客户端所在地区
3、通过地区拿到当地天气
4、整合功能,展示给用户
第一步,如何拿到用户IP
我们以Django环境为例
# 客户端的请求,IP信息会在请求头中
request.META['REMOTE_ADDR']
# 或
request.META.get('HTTP_X_FORWARDED_FOR')
里面
为什么是或呢?
这是因为有些服务器做了代理或者使用nginx等,在REMOTE_ADDR中会拿到本地回环地址:127.0.0.1
这时候真实的客户端IP在HTTP_X_FORWARDER_FOR中。
如果你是测试环境,项目跑在内网,又想拿到本地公网IP做测试,那怎么做呢?诶,这里也有办法
import re,requests
url = 'http://txt.go.sohu.com/ip/soip'
response = requests.get(url)
text = response.text
ip = re.findall(r'\d+.\d+.\d+.\d+', text)[0]
print("默认访客ip:%s"%ip)
通过requests模块和re模块向这个网址发送请求和解析匹配,你就可以拿到你的公网IP
第二步、找到对应城市
好了,IP解决了