Django视图的理解
视图
views.py -->视图文件
视图函数(FBV)和视图类(CBV)
视图函数:在路由path()内 直接调用,路由对象内部存储对应关系(键值对):路由标识符 ==> 对应函数
视图类:在路由path()通过as.view() 调用,路由对象内部存储对应关系(键值对):路由标识符 ==> as.view()方法的返回值
CBV与FBV的本质是一样的,只是CBV套了一层壳
Django开发目前常用场景是非前后端的项目多应用FBV,前后端分离、小程序等API项目结合 DRF,使用CBV较多
做三件事
1. 参数
- request对象 == WSGIRequest类的对象(内部提供一些方法),读取请求相关的所有数据
- v1,v2 或 *args, **kwargs 用户接收动态路由中的参数
# path('info/<int:v1>', view.info) def info(request, v1): returan HttpResponse("...") # path('info/<int:v1>', view.InfoView.as_view()) class InfoView(View): ... def get(self, request, v1): return HttpResponse("...")
2. 业务处理
获得数据后,完成业务逻辑比如:登录、注册、分析数据、处理数据、上传EXCEL、删除数据库等
3. 返回值
将完成业务处理的数据或结果组装构建成响应头(浏览器需要的)和响应体(浏览器页面展示的)
- HttpResponse
- JsonResponse
- render
- redirect(重定向)没有响应体,只有响应头。301(永久)与302(临时)对开者来说只是返回编码的不同
class HttpResponseRedirect(HttpResponseRedirectBase): status_code=302 #临时重定向 class HttpResponsePermanentRedirect(HttpResponseRedirectBase): status_code=301 #永久重定向
浙公网安备 33010602011771号