FBV视图
视图是Django的MTV架构模式的V部分,主要负责处理用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示,也可以理解为视图MVC中的C部分控制器,主要处理功能和业务上的逻辑。习惯使用视图函数处理HTTP请求,即在视图里面定义def函数,这种方式被称为FBV。
设置响应方式
网站的运行原理遵循的是HTTP协议,分为HTTP请求和HTTP响应。HTTP响应方式称为HTTP状态码。分为5种状态:消息,成功,重定向,请求错误和服务器错误。若以使用频率划分可分为:成功,重定向,和异常响应。
响应类
响应类型 说明 HttpResponse(''python') 状态码为200,请求已经成功,被服务器接收 HttpRensponseRedurect('/') 状态码为302,重定向首页地址 HttpRensponseBadRequest('400') 状态码为400,访问的页面不存在或请求错误 HttpResponseNotFound('404') 状态码为404,页面不存在或URL失效 HttpResponseForbidden('403')
状态码为403,没有访问权限 HttpResponseNotAllowed('405') 状态码为405,不允许使用这请求方式 HttpResponseServerError('500') 状态码500,服务器内容错误 JsonResponse({:}) 默认状态码为200,响应内容为Json StreamingHttpResponse() 默认状态码为200,响应内容为流式输出 HttpResposePermanentRedirect('/') 重定向301,永久重定向首页地址
上述的响应类主要来自模块django.http,该模块是实现响应功能的核心。
def index(reuquest): html='<h1>hello word</h1>' return HttpResponse(html,status=200)
第一个参数为响应内容,一般是网页内容或者Json数据,网页内容一般以HTML语言为主,Json用于生成API的接口,第二个参数为状态码,支持所有HTTP的状态码。
def render(request, template_name, context=None, content_type=None, status=None, using=None): """ Return a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments. """ content = loader.render_to_string(template_name, context, request, using=using) return HttpResponse(content, content_type, status)
render的参数request和template_name是必须要写的参数,其他是可选参数。各个参数的说明:
- request:浏览器向服务器发送请求对象,包含用户信息,请求的内容和请求的方式等。
- template_name:设置模文件名,用于生成网页内容。
- context:对模板上下文模板变量的赋值,已字典的形式表示,一般情况下是一个空字典。
- content_type:响应内容的数据格式,一般情况下默认即可。
- status:HTTP的状态码,默认为200
- using:设置模板引擎,用于解析模板文件,生成网页内容。
函数render的返回值借用HttpResponse来生成具体的响应内容,这说明响应类HttpResponse是Django在响应过程中核心的功能类。render读取模板的过程