Django day31 contentType组件,Django的缓存

一、contentType组件

  1、干什么用的?
    是一个django内置的一个组件,方便我们快速的连表操作
  2、这两个字段都不会在数据库中生成,他只是用来查询,插入的

-在course表中:
    policy = GenericRelation('PricePolicy', object_id_field='course_id', content_type_field='tyble_id')
-在价格策略表中:
    content_obj = GenericForeignKey('table_id', 'course_id')

二、Django的缓存:Django是一个大而全的好东西

  1、缓存机制的 优缺点:
    优点:把一些经常访问的页面放入缓存当中,请求来了,直接到缓存中拿数据
    缺点:缓存的数据不能实时更新
  2、Django缓存机制有什么用?

    提高网站的访问效率,有以下几种方式:前端用cdn来做,后台可以用缓存,数据库可以来优化,从三个角度分析,每个层面能够干什么

  3、Django中的6种缓存方式:用的比较常见的有文件缓存和Mecache缓存
  (1)开发调试缓存---> 此模式为开发调试使用,实际上不执行任何操作
  (2)内存缓存---> 将缓存内容保存至内存区域中
  (3)文件缓存---> 把缓存数据存储在文件中
  (4)数据库缓存---> 把缓存数据存储在数据库中
  (5)Memcache缓存(使用python-memcacheed模块连接memcache)---> Memcache是Django原生支持缓存系统,需要下载Memcached支持库python-Memcached或pylibme
  (6)Memcache(使用pylibmc模块)---> 是基于内存的缓存,数据库存储在内存中,
所以如果服务器死机的话,数据就会丢失,所以Memcached一般与其他缓存配合使用

  4、Django的基本用法是做什么用?
    Django提供了不同粒度的缓存,可以缓存某个页面,可以只缓存一个页面的某一个部分,甚至可以缓存整个网站,指定将缓存数据保存多久
  5、几种缓存机制:

  (1)全站缓存:两个中间件

MIDDLEWARE_CLASSES = (
    ‘django.middleware.cache.UpdateCacheMiddleware’, #第一
    'django.middleware.common.CommonMiddleware',
    ‘django.middleware.cache.FetchFromCacheMiddleware’, #最后
    )

  (2)单页面缓存:

from django.views.decorators.cache import cache_page
# 装饰器加载视图函数上即可
@cache_page(5)

  (3)页面局部缓存:

{% load cache %}
# 第一个参数是时间,第二个参数是别名
{% cache 5 'test' %}
缓存的时间:
{{ ctime }}
{% endcache %}