Django 缓存、序列化、信号

前端之家收集整理的这篇文章主要介绍了Django 缓存、序列化、信号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一,缓存

由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者memcache中之前缓存的内容拿到,并返回。

Django中提供了6种缓存方式:

  • 开发调试
  • 内存
  • 文件
  • 数据库
  • Memcache缓存(python-memcached模块)
  • Memcache缓存(pylibmc模块)

1,配置

a、开发调试

b、内存

c、文件

d、数据库

e、Memcache缓存(python-memcached模块)

f、Memcache缓存(pylibmc模块)

2,应用

a. 全站使用

b. 单独视图缓存

c、局部模板使用

更多:

二,序列化

关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。

1、serializers

django.core ret =<span style="color: #000000;"> models.BookType.objects.all()

data = serializers.serialize(<span style="color: #800000;">"<span style="color: #800000;">json<span style="color: #800000;">",ret)

2、json.dumps

<span style="color: #008000;">#<span style="color: #008000;">ret = models.BookType.objects.all().values('caption')
ret = models.BookType.objects.all().values_list(<span style="color: #800000;">'<span style="color: #800000;">caption<span style="color: #800000;">'<span style="color: #000000;">)
ret=<span style="color: #000000;">list(ret)
result = json.dumps(ret)

由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:

三,信号

Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。

1,Django内置信号

post_init pre_save post_save pre_delete post_delete m2m_changed class_prepared post_migrate Request/ request_finished got_request_exception template_rendered

对于Django内置的信号,仅需注册指定信号,当程序执行相应操作时,自动触发注册函数:

注册信号,写入与project同名的文件夹下的_init_.py文件中,也是换数据库引擎的地方。

2,自定义信号

a. 定义信号

在某py文件中定义信号。

= django.dispatch.Signal(providing_args=[,])

b. 注册信号

在_init_.py 中注册信号

callback(sender,**(pizza_done.connect(callback)

c. 触发信号

路径 pizza_done.send(sender=<span style="color: #800000;">'<span style="color: #800000;">seven<span style="color: #800000;">',toppings=123,size=456)

由于内置信号的触发者已经集成到Django中,所以其会自动调用,而对于自定义信号则需要开发者在任意位置触发。

更多:

猜你在找的Django相关文章