如何在django中获取用户IP地址?

如何在django中获取用户的IP

我有这样的看法:

创建您的视图
从django.contrib.gis.utils导入GeoIP
从django.template导入请求上下文
从django.shortcuts导入渲染到响应
def home(请求):
g=GeoIP()
client\u ip=request.META[‘REMOTE\u ADDR’]
横向,纵向=纵向(客户端ip)
返回render_to_response(’home_page_tmp.html’,locals())

但我得到了这个错误:

/mypage上的键错误/
“远程地址”
请求方法:获取
请求URL:http://mywebsite.com/mypage/
Django版本:1.2.4
异常类型:KeyError
异常值:
“远程地址”
异常位置:/mysite/homepage/views.py在主页第9行
Python可执行文件:/usr/bin/Python
Python版本:2.6.6
Python路径:[‘/mysite’、’/usr/local/lib/python2.6/dist-packages/flup-1.0.2-py2.6.egg’、’/usr/lib/python2.6’、’/usr/lib/python2.6/plat-linux2’、’/usr/lib/python2.6/lib-old’、’/usr/lib/lib/python2.6/lib-dynload’、’/usr/local/lib/python2.6/dist/python2.6/python2’]
服务器时间:2011年1月2日星期日20:42:50-0600

def获取客户端ip(请求):
x_forwarded_for=request.META.get('HTTP_x_forwarded_for'))
如果x_转发了以下内容:
ip=x_,用于.split(',')[0]
其他:
ip=request.META.get('REMOTE\u ADDR')
返回ip

确保已正确配置反向代理(如果有)(例如为Apache安装了mod_rpaf

注意:上面使用了X-Forwarded-For中的第一个项,但您可能希望使用最后一个项(例如,在Heroku的情况下:在Heroku上获取客户端的真实IP地址)

然后将请求作为参数传递给它

获取客户端ip(请求)

发表评论