最新消息:

Django使用request和response对象(2)

Django admin 1173浏览 0评论

具体内容查看《Django使用request和response对象(1)》,本文只是更形象化的展现相关知识,知识没有上一篇文章广泛。

 

一、关于request、response

这两个是好哥们,总是形影不离。它们可以用如下图表示:
12230559-85ca05508c33414cb2867b85c68ac6f1

二、HttpRequest对象

表示来自某客户端的一个单独的HTTP请求。HttpRequest对象是Django自动创建的。

它的属性有很多,可以参考DjangoBook,比较常用的有以下几个:

1、method:请求方法,如:

   1:  if request.method == "POST":
   2:      ......
   3:  elif request.mehtod =="GET":
   4:      ......

2、类字典对象GET、POST

3、COOKIES,字典形式

4、user:

一个django.contrib.auth.models.User 对象表示当前登录用户,若当前用户尚未登录,user会设为django.contrib.auth.models.AnonymousUser的一个实例

可以将它们与is_authenticated()区分开:

   1:  if request.user.is_authenticated():
   2:     ....
   3:  else:
   4:     ....

5、session、字典形式

6、request.META

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

HTTP_REFERRER:进站前链接网页,如果有的话

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" .

REMOTE_ADDR 客户端IP,如:"12.345.67.89" 。(如果申请是经过代理服务器的话,那么它可能是以逗号分割的多个IP地址,如:"12.345.67.89,23.456.78.90" 。)

   1:  def request_test(request):
   2:      context={}
   3:      try:
   4:  #        http_referer=request.META['HTTP_REFERRER']
   5:          http_user_agent=request.META['HTTP_USER_AGENT']
   6:          remote_addr=request.META['REMOTE_ADDR']
   7:          return HttpResponse('【http_user_agent】:%s,【remote_addr】=%s' %(http_user_agent,remote_addr))
   8:      except Exception,e:
   9:          return HttpResponse("Error:%s" %e)

注意:GET、POST属性都是django.http.QueryDict的实例,在DjangoBook可具体了解。

三、Response对象

该对象是自己创建的,在每一个视图都要实例化它,处理和返回一个HttpResponse对象

1、构造

HttpResponse类存在于django.http.HttpResponse,以字符串的形式传递给页面,下面构造函数:

12230710-642450043eca4d80854448ff852b5591

2、设置Hearders

可以想字典一样添加和删除头信息

12230729-9381251694664f76a43437200c85294d

3、HttpResponse子类

参考资料

对一些404、500等错误页面的处理。

转载请注明:jinglingshu的博客 » Django使用request和response对象(2)


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址