Django二转Day03 04

0 cbv执行流程,self问题

python 复制代码
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,无论字典或列表,都能完成序列化返回给前端

python 复制代码
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

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

redirect

python 复制代码
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

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

JsonResponse

python 复制代码
  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博客

相关推荐
wrj的博客1 小时前
python环境安装
python·学习·环境配置
Pyeako2 小时前
深度学习--BP神经网络&梯度下降&损失函数
人工智能·python·深度学习·bp神经网络·损失函数·梯度下降·正则化惩罚
摘星编程3 小时前
OpenHarmony环境下React Native:Geolocation地理围栏
python
充值修改昵称3 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
q_35488851535 小时前
AI大模型:python新能源汽车推荐系统 协同过滤推荐算法 Echarts可视化 Django框架 大数据毕业设计(源码+文档)✅
大数据·人工智能·python·机器学习·信息可视化·汽车·推荐算法
Yeats_Liao5 小时前
开源生态资源:昇腾社区ModelZoo与DeepSeek的最佳实践路径
python·深度学习·神经网络·架构·开源
被星1砸昏头5 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
love530love6 小时前
彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错
人工智能·windows·python·whisper·win_comfyui
不解风水6 小时前
《深度学习入门:基于 Python 的理论与实现》(斋藤康毅)
人工智能·python·深度学习
偷星星的贼116 小时前
数据分析与科学计算
jvm·数据库·python