怎么在Python中使用django框架现获取访问者ip地址

  介绍

本篇文章为大家展示了怎么在Python中使用django框架现获取访问者ip地址,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Python是什么意思

Python是一种跨平台的,具有解释性,编译性,互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

在django官方文档中有一段对request.META的解释:

HttpRequest。元
标准Python字典包含所有可用的HTTP标头。可用的头靠> request_meta =request.META   时间=info  []   for  k, v 拷贝request_meta.items ():   info.append (k)   print 信息   在在在   ['wsgi.version', 'RUN_MAIN', 'HTTP_REFERER', 'HTTP_HOST', 'SERVER_PROTOCOL', 'SERVER_SOFTWARE', 'SCRIPT_NAME', 'LESSOPEN', 'SSH_CLIENT', 'REQUEST_METHOD', 'LOGNAME', 'USER', 'HOME', 'QUERY_STRING', 'PATH', 'MYSQL_DATABASE_URI', 'wsgi.errors', 'TERADATA_JACKAL_URI', 'LANG', 'TERM', 'SHELL', 'TZ', 'HTTP_COOKIE', 'J2REDIR', 'REMOTE_ADDR', 'SHLVL', 'wsgi.url_scheme', 'HTTP_VIA', 'SERVER_PORT', 'wsgi.file_wrapper', 'JAVA_HOME', 'CONTENT_LENGTH', 'HTTP_CONNECTION', 'XDG_RUNTIME_DIR', 'TERADATA_PASSWORD', 'PYTHONPATH', 'COMP_WORDBREAKS', 'VIRTUAL_ENV', u'CSRF_COOKIE', 'J2SDKDIR', 'wsgi.input', 'HTTP_USER_AGENT', 'PS1', 'wsgi.multithread', 'HTTP_UPGRADE_INSECURE_REQUESTS', 'HTTP_CACHE_CONTROL', 'XDG_SESSION_ID', '_', 'HTTP_ACCEPT', 'DERBY_HOME', 'SSH_CONNECTION', 'LESSCLOSE', 'SERVER_NAME', 'GATEWAY_INTERFACE', 'HTTP_X_FORWARDED_FOR', 'SSH_TTY', 'OLDPWD', 'wsgi.multiprocess', 'HTTP_ACCEPT_LANGUAGE', 'wsgi.run_once', 'PWD', 'DJANGO_SETTINGS_MODULE', 'CONTENT_TYPE', 'TERADATA_SIMBA_URI', 'MAIL', 'LS_COLORS', 'REMOTE_HOST', 'HTTP_ACCEPT_ENCODING', 'PATH_INFO']

通常访问者的ip会包含在上边的键值对中,我们可以通过一下方式获取ip:

通常访问者的IP就在其中,所以我们可以用下列方法获取用户的真实IP:

#X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
  def  get_ip(请求):=,,x_forwarded_for  request.META.get (& # 39; HTTP_X_FORWARDED_FOR& # 39;)
  ,if  x_forwarded_for:
  时间=ip 才能;x_forwarded_for.split(& # 39; & # 39;)[0] #所以这里是真实的ip
  ,其他的:
  ip 才能=,request.META.get (& # 39; REMOTE_ADDR& # 39;) #这里获得代理ip
  以前,return  ip  

结合上一篇的日志模块,可以实现记录登陆用户的ip信息:

remote_info =, & # 39; & # 39;   时间=x_forwarded_for  request.META.get (& # 39; HTTP_X_FORWARDED_FOR& # 39;)   if  x_forwarded_for:=,remote_info  & # 39; HTTP_X_FORWARDED_FOR: & # 39;, +, x_forwarded_for.split (& # 39; & # 39;) [0]   时间=remote_addr  request.META.get (& # 39; REMOTE_ADDR& # 39;)   if  remote_addr:   +=,remote_info  & # 39;, REMOTE_ADDR: & # 39;, + REMOTE_ADDR   if  pass_auth:=,,user.last_login_at  timezone.now ()   ,试一试:   user.save才能()   ,except 例外,味精:   return 才能;JsonResponse({& # 39;结果# 39;:,& # 39;错误# 39;,,& # 39;消息# 39;:,str (msg)})   ,request.session [& # 39; user_id # 39;],=user_id   ,request.session.set_expiry (9000)   ,logger.info(& # 39;(成功),& # 39;+,user_id + & # 39;, has  logged  !, & # 39; + remote_info)   ,return  JsonResponse({& # 39;结果# 39;:,& # 39;成功# 39;,,& # 39;消息# 39;:,& # 39;Login 成功强生# 39;})   其他:   ,logger.warning(& # 39;(失败),& # 39;+,user_id  +, & # 39;, failed 用登录!,& # 39;+ remote_info)   ,return  JsonResponse({& # 39;结果# 39;:,& # 39;错误# 39;,,& # 39;消息# 39;:,& # 39;Username 或是Password  is 错误的强生# 39;})

怎么在Python中使用django框架现获取访问者ip地址

上述内容就是怎么在Python中使用django框架现获取访问者ip地址,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

怎么在Python中使用django框架现获取访问者ip地址