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子类(部分):
Class Description
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;">python



相关文章
相关标签/搜索