接受Django模板的ZipFile子类
项目描述
zipfile.Zipfile的子类,可用于Django模板。
使用方法
from zipfile import ZIP_DEFLATED from django_zipfile import TemplateZipFile def myview(request, object_id): obj = get_object_or_404(MyModel, pk=object_id) context = { 'object': obj } response = HttpResponse(mimetype='application/octet-stream') response['Content-Disposition'] = 'attachment; filename=myfile.zip' container = TemplateZipFile(response, mode='w', compression=ZIP_DEFLATED, template_root='myapp/myzipskeleton/') container.write_template('mimetype') container.write_template('META-INF/container.xml') container.write_template('chapter1.html', context=context) container.close() return response
您还可以指定多个模板的根目录
container = TemplateZipFile(response, mode='w', compression=ZIP_DEFLATED, template_root=['myapp/myzipskeleton/override/', 'myapp/myzipskeleton/default/'])
以及添加文件时的多个模板
container.write_template(['override.html', 'default.html'], filename="chapter1.html")
TemplateZipFile将按照指定的顺序查找模板,首先按根目录,然后按模板名称。例如
myzipfile = TemplateZipFile(response, mode='w', compression=ZIP_DEFLATED, template_root=['override/', 'default/']) myzipfile.write_template(['two.txt', 'one.txt'], filename='myfile.txt') # Will use the first existing template from ['override/two.txt', 'override/one.txt', 'default/two.txt', 'default/one.txt']
如果找不到任何模板,write_template将引发一个TemplateDoesNotExist错误。
您可以通过optional=True将文件指定为可选
myzipfile.write_template(['two.txt', 'one.txt'], filename='myfile.txt', optional=True)
这样做将静默地吞咽TemplateDoesNotExist异常。
项目详情
关闭
django-zipfile-0.4.0.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 096dd39201d3536abf6588c5efdc6cd1876dc9a50a21540e3a2048688a1d6162 |
|
MD5 | c61f2fccbddc1f638bc099bfd0413599 |
|
BLAKE2b-256 | e9646553d37e670a6bea4c921d2c7950ce5d92037c47f7f3b143cebc13fb019b |
关闭
django_zipfile-0.4.0-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 24f941ff0e0f72a91f6af1895d61defabb1c5370de95835d5a460a3cfb92a3ea |
|
MD5 | da8556d60d2ed856608bff26d67bafae |
|
BLAKE2b-256 | 7db069be149e9ed6e1d84b0a2a1db7f293ce1e672882c23ced571a80df4f20f9 |