正在加载...

Micolog新功能:从Zip文件中加载主题模板

十二月 9th, 2009

这两天,花了点时间,准备对Micolog进行一些修改。

GAE存在文件数目的限制,当我们安装了太多主题的时候,会占用大量的文件资源。所以如果能从Zip文件中加载主题模板,就能够大大的减少文件数量,就能够防止因为文件太多而导致的应用受限。

好在Google App Engine sdk中包含了Zipfile模板,我们可以使用这个模块来支持zip文件的解压缩,从而实现我们要求的功能。

刚开始以为很容易就能实现,结果走了不少弯路。

以下是最终的实现思路:

  1. 修改theme_file.py中的GetFile类,在Get方法中判断theme文件夹是否存在,如果不存在,则判断相应的.zip文件是否存在,如果存在则调用 ZipHandler进行处理。
    其中zipHandler包含在google.appengine.ext.zipserve中
    经过这样的处理,就可以正确的处理/theme/style.css类似这样的请求了
  2. 修改model.py中的theme类,增加theme是否zip文件的判断
  3. 查看了django.templates.loader模块,发现在find_template_source函数中提供了增加template_source_loaders的接口,所以只要实现自己的template_source_loader就可以了,仿照filesystem.py,我实现了一个zip_loader.py模块来支持从zip文件中加载模板。
  4. 修改settings.py文件,增加 
    TEMPLATE_LOADERS=('django.template.loaders.filesystem.load_template_source',
                        'ziploader.zip_loader.load_template_source')
  5. 重写templates.py模板,增加了micolog_templates.py,在这个文件里根据theme是否zip文件,设置TEMPLATE_DIRS的值

好久没写技术文章,发现不会写了!大家直接查看源文件

相关阅读:



“Micolog新功能:从Zip文件中加载主题模板” 共有5条留言

我要留言


google reader 抓虾
bloglines my yahoo
哪吒 鲜果
* 更多订阅本站方式请看 订阅帮助