首页 > 解决方案 > CKAN:从基本控制器继承时视图为空

问题描述

我想改变CKAN注册逻辑,所以继承了CKAN UserController类,注册为路由,但是当我尝试查看页面时,注册表为空。它只显示表单的页眉、页脚和标题。我没有创建 ./user/new.html 文件,所以我仍在使用 ckan 模板文件。

我的 plugin.py 文件

from ckan.config.routing import SubMapper

class AuthPlugin(plugins.SingletonPlugin):
    plugins.implements(plugins.IConfigurer)
    plugins.implements(IRoutes, inherit=True)

    def update_config(self, config_):
        toolkit.add_template_directory(config_, 'templates')
        toolkit.add_public_directory(config_, 'public')
        toolkit.add_resource('fanstatic', 'auth')

    def before_map(self, map):

        user_controller = 'ckanext.auth.controllers.user:UserController'
        with SubMapper(map, controller=user_controller) as m:
            m.connect('/user/register', action='register')

        return map

用户控制器类:

from ckan.controllers.user import UserController as CoreUserController

class UserController(CoreUserController):

    def register(self, data=None, errors=None, error_summary=None):
        return super(UserController, self).register(data, errors, error_summary)

我应该怎么做才能完成这项工作?

PS:因为我认为错误在 ckan ./templates/user.html 文件中,该文件有一个 {{ form | 安全}}标签。必须在控制器中设置某种上下文或某些内容才能使其工作。

PS2:奇怪的是当我为组织控制器做同样的事情时,它起作用了!!!

谢谢

标签: pythonflaskjinja2ckan

解决方案


推荐阅读