django中request相关用法

URL相关信息:

HttpRquest对象包含当前请求url的一些信息,通过这些信息,你可以获得正在访问这个页面的用户,或者使用的浏览器:

  1. request.path :除域名以外的请求路径,以正斜杠开头,例:“/hello/”
  2. request.get_host() : 主机名或者域名,例:"127.0.0.1:8000" or “https://github.com”
  3. request.get_full_path() :请求路径,可能包含查询字符串,例:“/hello/?print=true”
  4. request.is_secure() :如果通过https访问,则此方法返回true,否则返回false。

request的其他信息:

request.META 是一个python字典,包含了所有本次http请求的header信息,比如用户ip地址、用户Agent(通常是浏览器的名称和版本号)。 注:header信息完整列表取决于用户所发送的header信息和服务器端设置的header信息。这个字典中常见的键值如:

  1. HTTP_REFERER :进站前链接网页,如果有的话,(需要注意:它是REFERRER的笔误)
  2. HTTP_USER_AGENT : 用户浏览器的user-agent字符串。 例如:"Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.17)Gecko/20080829 Firefox/2.0.0.17" 3.REMOTE_ADDR :客户端ip,如:“127.0.0.1” ,若申请是经过代理服务器的话,那么它可能是以逗号分隔的多个ip地址。如:"12.345.67.89,23.456.78.90" 注:因为request.META是一个普通的python字典,因此当视图访问一个不存在的键时,会触发一个KeyError异常。(HTTP header信息是由用户的浏览器所提交的、不应该给予信任的“额外”数据,因此你总是应该好好设计你的应用以便当一个特定的Header数据不存在时,给出一个优雅的回应。)你应该用 try/except 语句,或者用Python字典的get()方法来处理这些“可能不存在的键”:
#### BAD!
def ua_display_bad(request):
  ua = request.META['HTTP_USER_AGENT'] # Might raise KeyError!
  return HttpResponse("Your browser is %s" % ua)

#### GOOD (VERSION 1)
def ua_display_good1(request):
  try:
    ua = request.META['HTTP_USER_AGENT']
  except KeyError:
    ua = 'unknown'
  return HttpResponse("Your browser is %s" % ua)

#### GOOD (VERSION 2)
def ua_display_good2(request):
  ua = request.META.get('HTTP_USER_AGENT', 'unknown')
  return HttpResponse("Your browser is %s" % ua)
原文地址:https://www.cnblogs.com/os-python/p/6756079.html