Python第十九课Django缓存,信号,序列化,抽屉页面分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python第十九课Django缓存,信号,序列化,抽屉页面分析相关的知识,希望对你有一定的参考价值。
本节内容
-
models操作
- Django的缓存
-
-
1.1 models操作
单表查询:
curd(增删改查)
多表查询:
# 一次性查出所有的数据,进行一次跨表查询 只能在有ForeignKey的表中正向使用,
select_realated():
进行一次跨表查询
user_list = Models.UserInfo.objetcts.all()
for row in user_list:
print(row.username,row.email,row.part_id,row.part.title) # 如果像这样查询(row.part.title将会进行一次跨表查询)
user_list = Models.UserInfo.objetcts.all().select_realated(‘part‘) # 只会进行一次跨表查询
# 进行两次单表查询 (进行多次单表查询,Django会自动进行关系关联)
prefetch_realated():
user_list = Models.UserInfo.objetcts.all().prefetch_realated(‘part‘)
# 第一句 : Models.UserInfo.objetcts.all()
# 第二句 : Models.Part.objetcts.filter(id__in=[上一句查询数据的part_id列表])
for row in user_list:
print(row.username,row.email,row.part_id,row.part.title) # 使用方法和之前一样,
# user_list = Models.UserInfo.objetcts.all().prefetch_realated(‘part‘,‘usertype‘,‘part__ut‘)
# 第一句:Models.UserInfo.objetcts.all()
# 第二句:Models.Part.objetcts.filter(id__in=part_id)
# 第三句:Models.UserInfo.objetcts.filter(id__in=usertype_id)
其他:
only为指定取的数据,
defer为指定不取的数据
通过这个方式取出的数据为queryset类型,如果要使用对象中其他没有查询的字段,多进行多余的sql查询
models.UserInfo.objetcts.all().only(‘id‘,‘name‘)
models.UserInfo.objetcts.all().defer(‘id‘,‘name‘)
1.2 缓存
Django中提供六中缓存方式:
1.开发调试 # 不缓存
2.内存
3.文件
4.数据库
5.Memcache缓存(python-memcache模块)
6.Memcache缓存(pylibmc模块)
1.2.1 缓存的配置
a.开发调试缓存配置(settings中配置)
# 此为开始调试用,实际内部不做任何操作 # 配置: CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.dummy.DummyCache‘, # 引擎 ‘TIMEOUT‘: 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) ‘OPTIONS‘:{ ‘MAX_ENTRIES‘: 300, # 最大缓存个数(默认300) ‘CULL_FREQUENCY‘: 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) }, ‘KEY_PREFIX‘: ‘‘, # 缓存key的前缀(默认空) ‘VERSION‘: 1, # 缓存key的版本(默认1) ‘KEY_FUNCTION‘ 函数名 # 生成key的函数(默认函数会生成为:【前缀:版本:key】) } } # 自定义key def default_key_func(key, key_prefix, version): """ Default function to generate keys. Constructs the key used by all other methods. By default it prepends the `key_prefix‘. KEY_FUNCTION can be used to specify an alternate function with custom key making behavior. """ return ‘%s:%s:%s‘ % (key_prefix, version, key) def get_key_func(key_func): """ Function to decide which key function to use. Defaults to ``default_key_func``. """ if key_func is not None: if callable(key_func): return key_func else: return import_string(key_func) return default_key_func
史蒂夫
以上是关于Python第十九课Django缓存,信号,序列化,抽屉页面分析的主要内容,如果未能解决你的问题,请参考以下文章