} } }

    Django进修笔记(7):HttpRequest对象与HttpResponse对象

    添加时间:2013-5-14 点击量:

    一、关于request、response

    这两个是好哥们,老是形影不离。它们可以用如下图默示:

    二、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,以字符串的情势传递给页面,下面机关函数:





    2、设置Hearders



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





    3、HttpResponse子类



    参考材料



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

    彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
    分享到: