我正在使用the cookbook instructions获取/favicon.ico和/robots.txt网址并看到奇怪的内容。我正在使用add_route
添加路线:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
# ....
config = Configurator(settings=settings)
config.add_static_view('public', 'public', cache_max_age=3600)
config.add_route('favicon.ico', '/favicon.ico')
config.add_route('robots.txt', '/robots.txt')
config.add_route('home','/{id}') #don't worry about this one
config.scan()
return config.make_wsgi_app()
并将视图定义为:
@view_config(name='favicon.ico')
def favicon_view(context, request):
return _fi_response
@view_config(name='robots.txt')
def robotstxt_view(context, request):
return _robots_response
根据上述链接中的说明创建_fi_response
和_robots_response
。可悲的是,当我进入我的一个页面时没有图标并转到localhost:6544/favicon.ico
时,它会产生404.奇怪的是,当我打开所有调试时,我看到了:
2012-10-13 21:38:50,437 DEBUG [trosted][Dummy-5] route matched for url http://localhost:6544/favicon.ico; route_name: 'favicon.ico', path_info: u'/favicon.ico', pattern: '/favicon.ico', matchdict: {}, predicates: ''
2012-10-13 21:38:50,438 DEBUG [trosted][Dummy-5] debug_notfound of url http://localhost:6544/favicon.ico; path_info: u'/favicon.ico', context: <pyramid.traversal.DefaultRootFactory instance at 0x102b6a7a0>, view_name: u'', subpath: (), traversed: (), root: <pyramid.traversal.DefaultRootFactory instance at 0x102b6a7a0>, vroot: <pyramid.traversal.DefaultRootFactory instance at 0x102b6a7a0>, vroot_path: ()
这让我觉得favicon是由一个进程找到的,而不是另一个进程。想知道是否有人有任何想法我做错了。
答案 0 :(得分:4)
所以问题是您添加了一个名为“favicon.ico”的路线,但您没有将视图附加到该路线。因此,日志输出表示匹配的路由。您使用了view_config
的“name”参数,它实际上与遍历中的“name”概念相匹配。解决此问题的方法是使用view_config
的“route_name”选项。
@view_config(route_name='favicon.ico')
def favicon_view(request):
return _fi_response
如果你没有让你的网站中所有其他1级深度网址陷入困境的路由/{id}
,你可以删除favicon路由,然后让遍历使用“name”参数处理它。 / p>