应用monkeypatch,它强制django的模板语言在无效假设方面出现更大的错误
django-shouty-templates的Python项目详细描述
Author: | Keryn Knight |
---|---|
Version: | 0.1.1 |
基本原理
给定这样的模板:
<html><head></head> <body> {% if chef.can_add_cakes %} <label class="alert alert-{{ chef.is_cake_chef|yesno:"success,danger,default" }} {% endif %}
一切正常,直到发生以下任何情况:
- chef不再是变量名。
- can_add_cakes被重构为can_add_pastries
- is_cake_chef已重命名is_pastry_king
如果发生这些情况,模板将不显示任何内容,或者将 标签显示不正确。
这个应用程序应用了一个monkeypatch,它强制django的模板语言出错 更大声地谈论无效的假设。
具体来说:
- chef如果调用变量sous_chef
- ^如果can_add_cakes不再是chef 的有效属性/属性/方法,则{tt8}$将引发异常。
- chef.is_cake_chef将基于相同的原因引发异常。
因此,您可以更自由地重构,知道如果模板呈现 没关系。不是编译时安全,但总比默默吞咽好 错误是因为你忘了什么!
设置
将shouty或shouty.Shout添加到settings.INSTALLED_APPS
可选配置
- settings.SHOUTY_VARIABLES可以是True|False,并确定 当尝试使用不存在的变量时,会引发异常。 默认为True。
- settings.SHOUTY_URLS可以是True|False,并确定 执行{% url 'myurl' as my_var %}和^{tt21}时引发异常$ 实际上并不能解决一个问题。默认为True。
- settings.SHOUTY_VARIABLE_BLACKLIST是str中的tuple,其中每个 表示要忽略的模板用法。如果你想修好 现有项目。如有必要,可以抑制chef.can_add_cakes。
- settings.SHOUTY_URL_BLACKLIST是2-tuple的tuple以防止 某些url和它们的输出变量不会对您大声喊叫。对 现有项目或不太严格的第三方应用程序。 例如:{% url "myurl" as my_var %}可以用^{tt31}抑制$ 这仍然会让{% url "myurl as "my_other_var %}引发异常。
默认配置
有一个硬编码的变量和url黑名单,以确保django管理员和 Django调试工具栏工作。
测试
完全没有。享受!
许可证
是FreeBSD。在存储库的根目录和任何存档中都应该有一个LICENSE文件。
版权所有(c)2019,Keryn Knight 保留所有权利
在满足以下条件的情况下,允许以源代码和二进制格式重新分发和使用(无论是否修改):
- 源代码的重新发布必须保留上述版权声明、此条件列表和以下免责声明。
- 以二进制形式重新分发必须在分发时提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
此软件由著作权人和出资人提供,如“是”,任何明示或默示保证,包括但不限于,适销性和适合特定目的的默示保证。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论其原因如何,也不论其责任理论是否在合同中,严格责任,或因使用本软件而产生的侵权行为(包括疏忽或其他),即使被告知此类损害的可能性。
django shouty模板的更改历史记录
0.1.1
- 初始版本