应用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将基于相同的原因引发异常。

因此,您可以更自由地重构,知道如果模板呈现 没关系。不是编译时安全,但总比默默吞咽好 错误是因为你忘了什么!

设置

shoutyshouty.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_BLACKLISTstr中的tuple,其中每个 表示要忽略的模板用法。如果你想修好 现有项目。如有必要,可以抑制chef.can_add_cakes
  • settings.SHOUTY_URL_BLACKLIST2-tupletuple以防止 某些url和它们的输出变量不会对您大声喊叫。对 现有项目或不太严格的第三方应用程序。 例如:{% url "myurl" as my_var %}可以用^{tt31}抑制$ 这仍然会让{% url "myurl as "my_other_var %}引发异常。

默认配置

有一个硬编码的变量和url黑名单,以确保django管理员和 Django调试工具栏工作。

测试

完全没有。享受!

许可证

FreeBSD。在存储库的根目录和任何存档中都应该有一个LICENSE文件。


版权所有(c)2019,Keryn Knight 保留所有权利

在满足以下条件的情况下,允许以源代码和二进制格式重新分发和使用(无论是否修改):

  1. 源代码的重新发布必须保留上述版权声明、此条件列表和以下免责声明。
  2. 以二进制形式重新分发必须在分发时提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。

此软件由著作权人和出资人提供,如“是”,任何明示或默示保证,包括但不限于,适销性和适合特定目的的默示保证。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论其原因如何,也不论其责任理论是否在合同中,严格责任,或因使用本软件而产生的侵权行为(包括疏忽或其他),即使被告知此类损害的可能性。


django shouty模板的更改历史记录

0.1.1

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在JUnit5中定义优先级   Web驱动程序将焦点切换到iframe的java困难   java JFileChooser没有文件名文本字段选项   本地化是否可以回退到Java中resourcebundle的宏语言(例如,nynorsk>norsk)   禁用时Java断言的性能拖动   未考虑执行中的java jsonschema2pojo maven插件配置   java微调器。setSelection未调用setOnItemSelectedListener函数   序列化XStream:序列化java的反序列化。sql。时间导致错误   java无法理解为什么“ajpnio8009execXX”线程在AbstractQueuedSynchronizer$ConditionObject上阻塞/等待时间。等候   Java date给我的格式是mm/dd/yyyy,其中jquery datepicker的日期格式是dd/mm/yyyy   jsf如何用javaweb应用程序在客户端重写csv文件   雅加达ee Java邮件Api,无法从outlook客户端读取“.msg附件”   java PreparedStatement性能调优