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
return HttpResponse('ok',headers={'xxx':'xxx'})
obj = HttpResponse('ok')
obj['yyy'] = 'yyy' # 像字典一样放入,最终会放在http的响应头中
return obj
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
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 页面静态化
导包
原文地址:https://blog.csdn.net/safvirtu/article/details/134697001
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_15413.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。