jinja2 - 如何自定义 ckan header 站点导航选项卡
问题描述
我想将额外的标题站点导航选项卡添加到默认选项卡。
我已经尝试使用这里给出的解决方案,但它对我不起作用。我收到Exception: menu item
apicannot be found
错误
这是我的 plugin.py 代码
import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit
class ApiPlugin(plugins.SingletonPlugin, toolkit.DefaultDatasetForm):
plugins.implements(plugins.IRoutes, inherit=True)
def before_map(self, m):
m.connect('api', #name of path route
'/api', #url to map path to
controller='ckanext.kimetrica_theme.controller:ApiController', #controller
action='api') #controller action (method)
return m
这是我的 header.html 代码
{% ckan_extends %}
{% block header_site_navigation_tabs %}
{{ h.build_nav_main(
('search', _('Datasets')),
('organizations_index', _('Organizations')),
('group_index', _('Groups')),
('about', _('About')),
('api', _('api'))
) }}
{% endblock %}
这是我的 controller.py 代码
import ckan.plugins as p
from ckan.lib.base import BaseController
class ApiController(BaseController):
def api(self):
return p.toolkit.render('api.html')
我希望 api 菜单像菜单的其余部分一样工作。我也有我的模板(api.html
)到位
解决方案
根据您发布的内容,您似乎尚未设置plugins.implements(plugins.IConfigurer, inherit=True)
注册新模板。尝试将此扩展名作为示例。https://github.com/ckan/ckan/blob/2.8/ckanext/stats/plugin.py用于设置新页面。
你在菜单的正确轨道上。
另外,您使用的是什么版本的 CKAN?您可能希望将其 pswitch 为烧瓶蓝图。像这样https://github.com/ckan/ckan/blob/2.8/ckanext/example_flask_iblueprint/plugin.py
如果您使用的是 2.9(在 alphha 中),请检查此问题和评论ckan 2.9.0 iroute before_map not invoking custom controller
推荐阅读
- c# - 如何在 QnAMakerDialogbase 中获取 qna 响应:QnAMakerDialog
- python - 如何通过 Python 上的 Bitmex Websocket Api 接收实时数据?
- keycloak - Red Hat SSO 7.3.0.GA 的 Keycloak API 调用依赖项
- http - 戈朗。如何自动授权我的应用访问 spotify API?
- java - Intellij 中的 AWSToolkit,环境变量不起作用
- javascript - 使用 Jest 对仅在函数存在时调用函数的 JavaScript 进行单元测试
- python - 无法摆脱使用 asyncio 时出现的一些错误页面
- php - 使用 htaccess 重定向到 https,但不使用 XAMPP 进行开发
- c# - 我可以对 Azure Cosmos 中的 DateTimeOffset 序列化对象使用 DateTimePart 函数吗?
- c# - 无法将 Json 字符串反序列化为 .NET 对象,但反序列化后对象为空