django的一些笔记

发布时间:2022-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了django的一些笔记脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 关联表查询效率提升, 使用连表查询 在for循环中每次都需要跨表查询效率极低q = models.UserInfo.objects.all().select_related('ut', 'gp') # 查询连表操作q = models.UserInfo.objects.all().PRefetch_related('ut') # 不做连表,做多次查询

2. 跨表查询方式 BOY(name) Girl(nick)-> Love(foreign_key gt,ut) # 1 反向解析 # obj = models.Boy.objects.filter(name='zhangsan').First() # love_list = obj.love_set.all() # for raw in love_list: # print(raw.gg.nick) # 2 连表查询 多次查询 影响效率 # love_list = models.Love.objects.filter(gb__name="lisi") # for row in love_list: # print(row.gg.nick) # 3 连表查询 拿到的是字典,其他返回的是对象 # love_list = models.Love.objects.filter(gb__name="lisi").values("gg__nick") # for ITem in love_list: # print(item['gg__nick']) # 4 关联查询 拿到的是对象 # love_list = models.Love.objects.filter(gb__name="lisi").select_related("gg") # for obj in love_list: # print(obj.gg.nick)

3 数据库创建多个对象 use bulk_create 批量创建 use create(**dic) 利用字典创建 # obj_list = [models.Boy(id=1,name='zhangsan'), # models.Boy(id=2,name='lisi'), # ] # obj_lists = [models.Girl(nick='xaoyu'), # models.Girl(nick='xiaosi'), # ] # Boy.objects.bulk_create(obj_list, 1) # Girl.objects.bulk_create(obj_lists, 1)

4. CBV装饰器def wrapPEr(func): def inner(*args, **kwargs) return func(*args, **kwargs) return inner# 2.在类上添加@mthod_decorator(wrapper, name='dispatch') 利用分流器在类上添加,则在每个方法上都装上修饰器class Foo(View): #@mthod_decorator(wrapper) def get(self, requst): pass def post(self, request): pass

5. 模板的使用 -模板继承 extends block xx -include 导入小组件 -函数->自动执行 -模板自定义函数 可带参数 -simple filter simple tag # 分别加入模板函数的装饰器名称 模板函数是可以带参数的函数 可以在页面渲染时传递参数 # filter对参数有限制 最多2个 传参方式别扭,但是可以和if条件语句结合使用 # {{第一个参数|函数名: 第二个参数}} # simple_tag 对参数无限制,传参方式简单,对参数个数没有限制 # {% 函数名 参数 参数%}

6 Session 可在settings配置文件中设置session的参数 request.session.set['name'] = value 设定的值为字典类型 request.session.get['name]

脚本宝典总结

以上是脚本宝典为你收集整理的django的一些笔记全部内容,希望文章能够帮你解决django的一些笔记所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。