我编写了一个自定义标签用于 django 模板:{% my_custom_tag %}
.
使用 django 通道,它扩展了一些页面功能。但我担心用户可能会意外地将此标签插入模板两次,这可能会产生一些问题,因为频道会两次提供相同的信息等。
是否有任何相对简单的方法来检查标签是否仅在模板中使用一次,否则会引发错误?
您可以操纵上下文,并设置某个键(最好是其他应用程序不使用的键(来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(..)
,则这些通常具有单独的上下文,但这可能是需要的。
请注意,错误是在运行时引发的。因此,我们不会主动检测发生这种情况的模板,但如果发生这种情况,我们将收到错误。