当前位置: 首页 > article >正文

Django二转Day03 04

0 cbv执行流程,self问题

path('index/', Myview.as_view()),

Myview.as_view()
实例化后返回
变成

return Myview.dispatch(request, *args, **kwargs)

但是视图函数Myview中没有 dispatch 方法
所以去
父类View中寻找

return View.dispatch(request, *args, **kwargs)

调用View.dispatch
 def dispatch(self, request, *args, **kwargs):
        if request.method.lower() in self.http_method_names:
            handler = getattr(self, request.method.lower(),        
    self.http_method_not_allowed)
        else:
            handler = self.http_method_not_allowed
        return handler(request, *args, **kwargs)

虽然调用的是View.dispatch,但是self参数是Myview
dispatch函数中做了赋值,handler被赋予了self.http_method_names中的一个
返回(假设)get

所以Myview.as_view()最后会变成调用Myview类中的get方法
也就是Myview.get()

 1 你自己写一个类,实现JsonResponse 功能,不需要传safe=False,无论字典或列表,都能完成序列化返回给前端

class MyJson(HttpResponse):

    def __init__(self,data,**kwargs,):

        kwargs.setdefault('content_type', 'application/json')
        data = json.dumps(data)
        super().__init__(content=data, **kwargs)

def aaa(request):
    return MyJson(['name','xht'],)

 2 四种情况,在响应头返回数据  xx=xx

HttpResponse


     return HttpResponse('ok',headers={'xxx':'xxx'})
     obj = HttpResponse('ok')
     obj['yyy'] = 'yyy'  # 像字典一样放入,最终会放在http的响应头中
     return obj

redirect

return redirect('http://www.baidu.com')
     res=resolve_url('login')
     return redirect('/login', headers={'xxx': 'ssss'})  # 不生效
     obj = redirect('/login')
     obj['xxx'] = 'xxx'
     return obj

 render

 return render(request,'index.html',headers={'xxx': 'ssss'}) # 不行
     obj = render(request, 'index.html')
     obj['xxx'] = 'xxx'
     return obj

 JsonResponse

  4 JsonResponse
     return JsonResponse({'name':'lqz'},headers={'xxx': 'ssss'})
     obj=JsonResponse({'name':'lqz'})
     obj['yyy']='yyy'
     return obj

3 绑定给类的方法,类来

调用,对象可以调用吗?如何用

类里面直接写函数默认绑定给对象
可以,点语法直接调用,但是要传参数(包括self参数)

4 绑定给对象的方法,对象来调用,类可以调用吗?如何用

类里的函数加@classmethod装饰器就是把方法绑定给类,把方法的第一个形参改为cls
可以,一般不用,调用时将类当作第一个参数传入

 5 写个图片上传功能,图片保存在根路径media文件夹下,上传成功直接在前端显示出上传的图片

 

 

 6 页面静态化

逻辑判断

导包

7 Django自定义过滤器

Django-自定义过滤器_django自定义过滤器_Python454的博客-CSDN博客


http://www.kler.cn/news/157029.html

相关文章:

  • Qt应用开发--国产工业开发板全志T113-i的部署教程
  • 基于Spring、SpringMVC、MyBatis的在线云音乐网站
  • Xilinx FPGA——ISE的UCF时序约束
  • LeetCode刷题---打家劫舍问题
  • LoadBalancer将服务暴露到外部实现负载均衡purelb-layer2模式配置介绍
  • 万宾科技可燃气体监测仪科技作用全览
  • SpringBoot自定义异常处理机制
  • GEE:使用拉普拉斯(Laplacian)算子对遥感图像进行卷积操作
  • 英语语法学习 - 每周更新学英语知识点
  • 小米秒享3--非小米电脑
  • 基于YOLOv8深度学习的安全帽目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • python之ddddocr快速识别
  • 茄子科技张韶全:跨多云大数据平台DataCake在OceanBase的实践
  • 2024最新版软件测试八股文(文档)
  • AI浪潮下,非科班出身还有机会入行程序开发领域么?
  • jquery学习笔记
  • 12.04 二叉树中等题
  • Vue3组合式API
  • DevEco Studio将常用内容设为代码模板 通过快捷键调出
  • 网工学习8-配置 STP 协议(一)
  • 【陈老板赠书活动 - 19期】-2023年以就业为目的学习Java还有必要吗?
  • 【数组】-Lc27-移除元素(相向双指针)
  • android studio 打开flutter项目 出现 dart sdk is not configured
  • navicat premium 历史版本下载地址
  • AI代码助手:写代码“如虎添翼”
  • 自动化集成有哪些典型应用场景?
  • 【程序员的养生指南--散文篇】
  • 毕业项目分享
  • LabVIEW开发工业设备远程在线状态监测
  • 如何有效进行测试执行进度计划