defer和only和choice和inclusion_tag和事物

defer和only

需求, 一个表有很多很多个字段,如果只要其中的一两个字段 , 那么, 我们只需要取出这一两个字段就可以了, 效率就会提升

defer('id','name'):取出对象,除了id和name的其他字段

only('id','name'):取的对象,只有id和name

如果点,依然能点出其它列,但是不要点了,因为取没有的列,会再次查询数据库

也就是说, 你取出了哪些字段就不要用其他字段了

eg:

    ret=models.Author.objects.only('nid')
    for i in ret:
        # 查询不在的字段,会再次查询数据库,造成数据库压力大
        print(i.name)

choice

需求: 性别在数据库里存的是 1 和2 ,其中1代表男,如何跳过 if 判断而直接拿到汉字的男女

在模型层:
    先定义:
        mychoice=((1,'男'),(2,'女'),(3,'其他'))
    在定义性别字段时:
        sex = models.IntegerField(choices=mychoice)
        
在视图层的用法: get_字段名_display()
    sex=author.get_sex_display()
    

inclusion_tag 我叫他动态组件

介绍:

​ 写一个html组件 , 但是里面的数据是动态渲染的 , 我们可以定义一个inclusion_tag , 可以将数据传给这个组件 , 然后在其他模板里需要用到这个组件的时候 load 过来就可以了

1. 在app下创建一个templatetags的文件夹(名字不能改)

2. 在模块下新建一个py文件(名字随意, 如:mytag.py)

3. 在此文件编辑代码
    from django.template import Library
    register=Library()------>名字必须叫register
    使用装饰器:@register.inclusion_tag('test.html') 参数为组件的文件名
    写个函数my_inclusion,返回一个字典

 4. 在模板中使用:
    {% load mytag %}
    {% my_inclusion 参数%}  此处可以传参数也可以不传

总结

写一个组件, 里面需要数据, 写一个函数给这个组件传数据, 然后就可以在模板里面使用这个动态组件了

使用实例:

mytag.py

from django.template import Library
from app01 import models
register = Library()

@register.inclusion_tag('test.html') 参数为组件的文件名
def author_tag():
    author_list=models.Author.objects.all()
    return {'author_list':author_list}

其他模块使用这个组件:

<div>
    {% load mytag %}
    {% author_tag %}
</div>

事物

    from django.db import transaction
    with transition.atomic():
        sql1
        sql2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,004评论 2 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 一. Java基础部分.................................................
    wy_sure阅读 3,832评论 0 11
  • 这世间熙熙攘攘,皆为白娟,江山四海为素霓,王侯士民也便是白鹄。若无墨者来点染,世间色彩该有多么单调。 ...
    木木_88a0阅读 625评论 0 0
  • 今天是中秋节,朋友圈里都在刷,好多人都回家过节了,我也好想家里的亲人,好想和你们一起过节,没办法只能静静的一个人过...
    微笑你我他阅读 158评论 0 2