gpt4 book ai didi

CKAN扩展相互覆盖,正确的顺序是什么?

转载 作者:行者123 更新时间:2023-12-02 03:27:19 25 4
gpt4 key购买 nike

当安装多个 CKAN 扩展时,它们似乎会相互覆盖。 例如ckan.plugins = pulgin1,plugin2,plugin3

如果plugin1和plugin2都修改页面的外观(jinja tempaltes),则plugin1似乎优先于plugin2。总是这样吗?

功能(函数等)怎么样?没有找到与此相关的代码或文档。

最佳答案

对于模板,左侧列出的插件优先于右侧列出的插件。在您的示例中,如果所有三个插件都提供相同的模板,则将使用 plugin1 的模板。

但是,这并不意味着其他插件对模板所做的更改完全丢失:在实现模板时,插件可以决定使用ckan_extends扩展现有模板。语法。

如果示例中的每个插件在同一模板上使用 ckan_extends,则 plugin3 会扩展 CKAN 的该模板的基本版本 plugin2扩展了 plugin3 的内容,最后 plugin1 扩展了 plugin2 的内容。如果其中一个插件不使用ckan_extends,那么该链就会被破坏。

在其他情况下,插件通常按其列出的顺序(从左到右)调用。例如,如果 plugin1plugin2 都实现 IMiddleware接口(interface),然后首先调用 plugin1.make_middleware 并将其结果传递给 plugin2.make_middleware

这也意味着,当左侧列出的插件对资源 View 类型、模板助手等使用相同名称时,会覆盖右侧列出的插件。请参阅 the section on avoiding name clashes在 CKAN 文档中了解更多信息。

对于通过 IActions 定义的操作函数 ,您可以使用ckan.plugins.toolkit.chained_action装饰器来扩展现有的操作函数而不是替换它们(类似于模板继承)。这同样适用于通过 IAuthFunctions 定义的验证函数 ,您可以在其中使用 ckan.plugins.toolkit.chained_auth_function装饰器。

关于CKAN扩展相互覆盖,正确的顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52936903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com