django中request对象的属性和方法

1. Request对象方法和属性

  • request.method获取请求方法

  • request.GET or request.POST获取GET or POST请求参数,字典形式。

  • request.POST.get('name',default=None)获取POST请求参数

  • request.GET.getlist('name',default=None)获取GET参数列表

  • request.META:包含当前HTTP请求的Headers头部信息, 字典形式。键值KEY都是大写。比如request.META['REMOTE_ADDR']可获取用户远程IP地址。

  • request.user获取当前访问用户的所有信息。

  • request.path获取当前访问路径。

 

2. 常用request.META属性

request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,常用属性包括:

  • REQUEST_METHOD: 当前请求方法, GET或POST

  • HTTP_USER_AGENT: 用户浏览器的字符串, 比如Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36。注意

  • REMOTE_ADDR:  客户端IP地址,比如54.489.102.201 。

  • PATH_INFO: 当前路径信息,如"/index", 等同于request.path

注意有些用户的User Agent的字符串获取不了,所以使用python的get方法request.META.get('HTTP_USER_AGENT', 'unknown') 要好于request.META['HTTP_USER_AGENT'],防止抛出错误异常。

 

3. 负载均衡中如何获取远程用户的真实IP地址

解决办法如下:

1. 在settings.py中需要添加如下这个中间件

django.middleware.http.SetRemoteAddrFromForwardedFor

2. 视图views.py改为:

from django.shortcuts import render


def index(request):
    user = request.user
    user_agent = request.META.get('HTTP_USER_AGENT', 'unknown')
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR', '')

    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]  # 所以这里是真实的ip
    else:
        ip = request.META.get('REMOTE_ADDR')  # 这里获得代理ip

    context = {'user': user, 'user_agent': user_agent, 'ip': ip, }

    return render(request, "request_demo/index.html", context)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专职

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值