Django 惰性机制

Posted love2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 惰性机制相关的知识,希望对你有一定的参考价值。

惰性机制:Publisher.Book.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行sql,为了测试,我们加上 sql 日志。

在 settings.py 文件上添加下面代码

# 在里面添加
LOGGING = {
    version: 1,
    disable_existing_loggers: False,
    handlers: {
        console:{
            level:DEBUG,
            class:logging.StreamHandler,
        },
    },
    loggers: {
        django.db.backends: {
            handlers: [console],
            propagate: True,
            level:DEBUG,
        },
}

 

在views.py写一个函数

from django.shortcuts import render, HttpResponse
 
from app01 import models
 
def temp(requset):
 
obj1 = models.Book.objects.filter(id=1)
 
return HttpResponse("我是函数temp")

 

浏览器访问 http://127.0.0.1:8080/temp 结果显示 sql 语句没有执行
技术图片

将函数进行一些修改

在 views.py 上调用 obj1对象

def temp(requset):
 
    obj1= models.Book.objects.filter(id=2)
    for obj in obj1:
        print(obj.title)
 
    return HttpResponse("我是temp函数")

浏览器访问 http://127.0.0.1:8000/temp/ 结果显示 sql 语句已执行
技术图片

以上是关于Django 惰性机制的主要内容,如果未能解决你的问题,请参考以下文章

Django 惰性机制

Python学习---django惰性机制

Django中的惰性机制

Django QuerySet缓存和惰性机制

ORM增删改查(关联 | 聚合 | F/Q)&惰性机制 | Django开发

Django学习手册 - ORM 数据表操作