代码之家  ›  专栏  ›  技术社区  ›  Philipp Chapkovski

检查标记是否仅在模板中使用一次

  •  1
  • Philipp Chapkovski  · 技术社区  · 7 年前

    我编写了一个用于django模板的自定义标记: {% my_custom_tag %} .

    使用django通道扩展了一些页面功能。但我担心用户可能会意外地将这个标签插入到模板中两次,这会造成一些问题,因为频道会传递两次相同的信息等。

    是否有任何相对简单的方法来检查标记是否只在模板中使用一次,否则会引发错误?

    1 回复  |  直到 7 年前
        1
  •  1
  •   willeM_ Van Onsem    7 年前

    您可以对上下文进行操纵,并将某个键(最好是其他应用程序不使用的键)设置为 True ,否则引发异常。例如:

    @register.simple_tag(takes_context=True)
    def my_custom_tag(context):
        if '__some_weird_name__for_my_custom_tag' in context:
            raise Exception('my_custom_tag is already used')
        context['__some_weird_name__for_my_custom_tag'] = True
        # ...
        # do other logic
        pass

    当然,条件是最初不要将具有此名称的内容传递给上下文。

    此外,如果您要执行多个 render(..) 在一个视图中,它们通常有一个单独的上下文,但这可能是需要的。

    请注意,错误出现在 运行时 . 因此,我们没有 主动 检测发生这种情况的模板,但如果发生这种情况,我们将得到一个错误。

    推荐文章