python16_day19Django_抽屉项目

Posted

tags:

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

一、缓存

  基于内存缓存配置:

  1.settings.py

     CACHES = {
            default: {
                BACKEND: django.core.cache.backends.locmem.LocMemCache,
                LOCATION: unique-snowflake,
          TIMEOUT: 300,  # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
              OPTIONS: {
                MAX_ENTRIES: 300,  # 最大缓存个数(默认300)
                CULL_FREQUENCY: 10,  # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
              },
             # ‘KEY_PREFIX‘: ‘prev‘,  # 缓存key的前缀(默认空)
             # ‘VERSION‘: 1,  # 缓存key的版本(默认1)
             # ‘KEY_FUNCTION‘ 函数名  # 生成key的函数(默认函数会生成为:【前缀:版本:key】)
            }
        }

  2.全站使用缓存

MIDDLEWARE = [
        django.middleware.cache.UpdateCacheMiddleware,
        # 其他中间件...
        django.middleware.cache.FetchFromCacheMiddleware,
    ]

  3.单独视图使用

from django.shortcuts import render
import time
from django.views.decorators.cache import cache_page

@cache_page(10)    # 10秒
def index(request):
    ctime = time.time()
    return render(request,index.html,{ctime: ctime})

  templates/index.html

<h3>{{ ctime }}</h3>

  4.页面局部使用

  templates/index.html

 1 {% load cache %}    
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 <head>
 5     <meta charset="UTF-8">
 6     <title></title>
 7 </head>
 8 <body>
 9         {% cache 5000 keyname %}
10             <h1>{{ ctime }}</h1>
11         {% endcache %}
12 
13     <h3>{{ ctime }}</h3>
14 </body>    

 

二、信号

  1.内置信号

 1 Model signals
 2     pre_init                    # django的modal执行其构造方法前,自动触发
 3     post_init                   # django的modal执行其构造方法后,自动触发
 4     pre_save                    # django的modal对象保存前,自动触发
 5     post_save                   # django的modal对象保存后,自动触发
 6     pre_delete                  # django的modal对象删除前,自动触发
 7     post_delete                 # django的modal对象删除后,自动触发
 8     m2m_changed                 # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发
 9     class_prepared              # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发
10 Management signals
11     pre_migrate                 # 执行migrate命令前,自动触发
12     post_migrate                # 执行migrate命令后,自动触发
13 Request/response signals
14     request_started             # 请求到来前,自动触发
15     request_finished            # 请求结束后,自动触发
16     got_request_exception       # 请求异常后,自动触发
17 Test signals
18     setting_changed             # 使用test测试修改配置文件时,自动触发
19     template_rendered           # 使用test测试渲染模板时,自动触发
20 Database Wrappers
21     connection_created          # 创建数据库连接时,自动触发

  2.配置

  mysite/mysite/__init__.py

技术分享
 1  from django.core.signals import request_finished
 2     from django.core.signals import request_started
 3     from django.core.signals import got_request_exception
 4 
 5     from django.db.models.signals import class_prepared
 6     from django.db.models.signals import pre_init, post_init
 7     from django.db.models.signals import pre_save, post_save
 8     from django.db.models.signals import pre_delete, post_delete
 9     from django.db.models.signals import m2m_changed
10     from django.db.models.signals import pre_migrate, post_migrate
11 
12     from django.test.signals import setting_changed
13     from django.test.signals import template_rendered
14 
15     from django.db.backends.signals import connection_created
16 
17 
18    # sender 请求的所有信息
19     def callback(sender, **kwargs):
20         print("xxoo_callback")
21         print(sender,kwargs)
22 
23     request_finished.connect(callback)
View Code

  3.自定义信号

    a.定义信号   

import django.dispatch
pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])

    b.注册信号   

def callback(sender, **kwargs):
    print("callback")
    print(sender,kwargs)
 
pizza_done.connect(callback

    c.触发信号

from 路径 import pizza_done
pizza_done.send(sender=‘seven‘,toppings=123, size=456)

  

  

以上是关于python16_day19Django_抽屉项目的主要内容,如果未能解决你的问题,请参考以下文章

python2.0_day19_充分使用Django_form实现前端操作后台数据库

python16_day15Django入门

python16_day17Django_sessionajax

python16_day18Django_Form表单分页

Django基础04-day19

python之路_day70_django中cookie介绍