4.4.1设置视图的响应方式
不同的响应方式对应不同的响应码
HttpResponse(”你好“,status=200)====status 200,以下所有响应的基类
HttpResponseRedirect(”/“)====状态码 302,重定向
HttpResponsePermanentRedirect(”/“)====状态码 301,永久重定向
HttpResponseBadRequest("400") ====状态码400 访问的页面不存在或者请求错误
HttpResponseNotFound("404") ====状态码404 网页不存在或者url失效
HttpResponseForbidden('403') ====没有访问权限
HttpResponseNotAllowed("405")====不允许使用该请求方式
HttpResponseServerError(”500“)====服务器内部错误
JsonResponse({"name":"joe"})====输出json,状态码200
StreamingHttpResponse()====状态码200,响应内容以流形式输出
render(request,template_name,context,content_type,status,using)
request:请求对象
template_name:模板名字
context:对模板上下文进行复制,默认为一个空dict
content_type:响应内容的数据格式,默认即可
status:状态码
using:模板引擎指定
render读取index.html的运行过程:
1 使用loader.render_to_string方法读取模板内容
2 由于模板文件设有模板上下文,因此模板文件解析网页内容的过程需要you模板引擎using实现
3 解析模板文件的过程中,loader.render_to_string的从参数context给模板语法的变量提供具体数据内容 若模板上下文不存在该参数,则对应的网页内容为空
4 调用响应类httpresponse,将content(文件解析结果),content_type (响应内容数据格式)和status以参数的形式传入httpresponse中,从而完成响应过程
local()是Python中的一个内置函数,它可以将函数中的局部变量以字典的形式返回,local()虽然极其符合python倡导的简便的特性,但是也有一定的局限性,它会将所有的局部变量都进行返回,但有些变量并不是我们所需要的。比如说在Django的视图函数中,我们可能会定义一些中间变量,这些中间变量是不需要被传递的,但是local()也会将它们装入字典中,所以当你需要返回一个函数中的所有变量时,用Local再好不过,但是当你只需要返回某些局部变量的时候,还是老老实实自己构造字典吧!