金字塔:在与路径无关的单独文件中定义的视图

时间:2014-06-10 13:33:30

标签: python pyramid

我的__init__.py文件中包含以下内容。

config = Configurator(settings=settings)

config.include('pyramid_jinja2')
config.include('pathshala.routes.all_routes')

config.add_static_view('static', 'static', cache_max_age=3600)

config.scan()

我已在routes.py中定义了所有路径:

def all_routes(config):
    config.add_route('sis_add_student', '/sis/add')

所有视图都在views.py文件(在同一个包中)中定义,该文件具有:

@view_config(route_name='sis_add_student')
def add_student_view(request):
    return Response("Hey there!")

但是,当我尝试打开路径/sis/add时,出现404错误。调试工具栏表明已识别出正确的路由,但没有与该路由关联的视图。

有趣的是,如果我将视图声明移动到__init__.py,它可以正常工作。

我做错了什么?我觉得我的config.scan()应该受到责备,因为只有当声明在另一个文件中时我才能将视图关联起来但我不确定并且不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

如果你不坚持以奇特的方式去做,你可以做点什么

from .routes import add_routes

config = Configurator(settings=settings)    
config.include('pyramid_jinja2')

add_routes(config)

config.add_static_view('static', 'static', cache_max_age=3600)

config.scan()

在我的应用中,我是这样做的,因为我不知道config.include(),它确实有效:)

答案 1 :(得分:0)

看起来你的项目中没有名为views的包。我已将views声明为一个包。通过从views目录中删除__init__.py来删除它解决了这个问题。