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
如果你不想用复杂的方法,可以试试这样做:
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()
这个方法,不过这样也能正常工作 :)
0
看起来在你的项目里不能有一个叫做 views
的包。我之前把 views
定义成了一个包。后来我通过删除 __init__.py
文件来去掉这个包,问题就解决了。