Django学习--view.py详解

1.http请求中产生的两个核心对象:
http请求:HttpRequest
http响应:HttpResponse
存在于Django.http 模块中
 
2.HttpRequest:
属性:
HttpRequest.scheme  #一个字符串,表示请求的方案(通常是http或者https)
HttpRequest.body    #一个字节字符串,表示原始HTTP请求的正文
HttpRequest.path    #一个字符串,表示请求的页面的完整路径,不包含域名
HttpRequest.method   #一个字符串,表示请求使用的HTTP方法,必须使用大写
HttpRequest.GET      #一个类似于字典的对象,包含HTTP GET的所有参数
HttpRequest.POST     #一个包含所有给定的HTTP POST参数的类字典对象,提供了包含表单数据的请求
HttpRequest.REQUEST  #一个将GET,POST属性结合起来的属性,但有特殊性,先查找POST属性,后查找GET属性,此属性在Django1.9就已经被移除,做了解
HttpRequest.COOKIES    #一个标准的python字典,包含所有cookie,键和值都为字符串
HttpRequest.FILES     #一个类似于字典的对象,包含所有的上传文件
HttpRequest.META      #一个标准的python字典,包含所有的HTTP头部
HttpRequest.user     #一个django.contrib.auth.models.User对象,代表当前登录的用户,如果访问的用户没有登录,则user将被初始化为django.contrib.auth.models.AnonymousUser的实例,可以通过user的in_authenticated()方法来辨别用户是否登录。
 
 
 
11
 
 
 
 
 
1
HttpRequest.scheme  #一个字符串,表示请求的方案(通常是http或者https)
2
HttpRequest.body    #一个字节字符串,表示原始HTTP请求的正文
3
HttpRequest.path    #一个字符串,表示请求的页面的完整路径,不包含域名
4
HttpRequest.method   #一个字符串,表示请求使用的HTTP方法,必须使用大写
5
HttpRequest.GET      #一个类似于字典的对象,包含HTTP GET的所有参数
6
HttpRequest.POST     #一个包含所有给定的HTTP POST参数的类字典对象,提供了包含表单数据的请求
7
HttpRequest.REQUEST  #一个将GET,POST属性结合起来的属性,但有特殊性,先查找POST属性,后查找GET属性,此属性在Django1.9就已经被移除,做了解
8
HttpRequest.COOKIES    #一个标准的python字典,包含所有cookie,键和值都为字符串
9
HttpRequest.FILES     #一个类似于字典的对象,包含所有的上传文件
10
HttpRequest.META      #一个标准的python字典,包含所有的HTTP头部
11
HttpRequest.user     #一个django.contrib.auth.models.User对象,代表当前登录的用户,如果访问的用户没有登录,则user将被初始化为django.contrib.auth.models.AnonymousUser的实例,可以通过user的in_authenticated()方法来辨别用户是否登录。
 
 
方法:
HttpRequest.get_host()#返回请求的原始主机
HttpRequest.get_full_path()#返回path,如果可以将加上查询字符串例如:"/music/bands/?print=true"
HttpRequest.read(size=None)
HttpRequest.readline()
HttpRequest.readlines()
HttpRequest.xreadlines()
HttpRequest.__iter__()
#这几个方法实现类文件的接口用于读取HttpRequest.示例。这使得可以用流的方式读#取进来的请求,一个常见的用例是使用迭代解析器处理大型XML有效载荷,而不是内存#中构造一个完整的XML树。
 
 
 
 
 
 
 
 
 
1
HttpRequest.get_host()#返回请求的原始主机
2
HttpRequest.get_full_path()#返回path,如果可以将加上查询字符串例如:"/music/bands/?print=true"
3
HttpRequest.read(size=None)
4
HttpRequest.readline()
5
HttpRequest.readlines()
6
HttpRequest.xreadlines()
7
HttpRequest.__iter__()
8
#这几个方法实现类文件的接口用于读取HttpRequest.示例。这使得可以用流的方式读#取进来的请求,一个常见的用例是使用迭代解析器处理大型XML有效载荷,而不是内存#中构造一个完整的XML树。
 
 
3.HttpResponse:
对于DjangoRequest对象来说,是由Django自动创建,而HttpResponse对象就必须我们自己创建。每个View方法必须返回一个HttpResponse对象。
在view.py中使用的是如下返回方式:
既然必须返回HttpResponse对象,那么为什么这里只返回rander对象?我们可以查看rander的具体构造,
可以看到在rander函数中返回的其实也是一个HttpResponse对象,所以可以使用简便的render方法来代替HttpResponse的返回。
 
在HttpReponse对象上扩展的常用方法:render,render_to_response,redirect  这三个方法都在django.shortcuts 中(from django.shortcuts import render,render_to_response,redirect)
其中render_to_response和render效果一样但更简洁。
示例:
 
HttpResponse子类(部分):
ClassDescription
HttpResopnseRedirect构造函数接受单个参数,重定向到URL,可以是全URL,或者相对URL。注意:这里将返回HTTP状态码302
HttpResponsePermanentRedirect同HttpResponseRedirect一样,但是返回永久重定向,HTTP状态吗301
HttpResponseNotFound返回404status code
JsonResponse返回Json字符串
 
4.locals()方法:
在render方法中以字典的形式传递参数时,如果所要传递的字典值太多,自己构造的话就会太复杂且代码可读性也不太好。这时就可使用locals()方法,其会将函数中的所有变量传递给模板。
 
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 





转载于:https://www.cnblogs.com/hskullbk/p/9217266.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值