Django --探究FBV视图

本文详细介绍了Django的函数式视图(FBV)及其工作原理,包括响应方式、响应类、重定向、异常响应和HTTP请求对象。重点讨论了如何设置HTTP状态码、使用render函数以及处理重定向和异常情况。此外,还探讨了视图函数中的请求参数,如GET和POST请求,并介绍了cookie和session在Django中的应用,以解决HTTP协议无状态的问题。
摘要由CSDN通过智能技术生成

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读取模板的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值