ContentType組件
解決什麼問題:表的id和數據id,來惟一肯定一條數據
用:
插入數據:
models:content_obj = GenericForeignKey('table_id', 'course_id')
存:models.PricePolicy.objects.create(period=5, price=18000, content_obj=degree)
查詢數據:
1 經過課程查價格策略:
policy = GenericRelation('PricePolicy', object_id_field='course_id', content_type_field='table_id')
course.policy.all() 拿出全部價格策略
2 經過價格策略查課程
content_obj = GenericForeignKey('table_id', 'course_id')
price.content_obj 拿到的就是課程對象
django
Django緩存機制
三個粒度:
1 全站緩存
用中間件:
MIDDLEWARE = [
# 'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.security.SecurityMiddleware',
。。。。。。
# 'django.middleware.cache.FetchFromCacheMiddleware'跨域
]
# CACHE_MIDDLEWARE_SECONDS=10
2 單視圖:
用裝飾器
from django.views.decorators.cache import cache_page
# @cache_page(24*60*60)
3 局部頁面:
{% load cache %}
{% cache 5 'test' %} 兩個參數:時間,惟一標識
{{ ctime }}
{% endcache %}瀏覽器
跨域請求
1 瀏覽器的同源策略
2 簡單請求:發一次請求
response['Access-Control-Allow-Origin'] = '*'
response['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8008,http://127.0.0.1:8009'
2 非簡單請求:發兩次,一次預檢(OPTIONS),第二次是真正的請求
if request.method=='OPTIONS':
response['Access-Control-Allow-Methods']='PUT,DELETE'
response['Access-Control-Allow-Headers']='Content-Type'
建議寫再中間件裏
註釋:裏面儘可能不要寫(*),都支持(*)緩存