Django--view.py详解
Posted hskullbk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()方法,其会将函数中的所有变量传递给模板。
以上是关于Django--view.py详解的主要内容,如果未能解决你的问题,请参考以下文章
如何获取Django view.py来请求选定的帖子信息,如主键?
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段