出于调试目的,我正在尝试查看从我的html文件中请求的静态文件(css,js,jpg等)文件。我在这里阅读了文档:enter link description here我已经设置了我的配置:
config.add_route('catchall_static', 'static/*subpath')
和我的观点:
@view_config(route_name='catchall_static')
path_info = request._headers.environ['PATH_INFO']
log.debug('path info = {0} {1}'.format(path_info, query_string))
return request.response
使用此代码可以进行一些操作。
1)虽然静态文件来自视图,但它们实际上并未实际加载到浏览器中 2)当静态文件通过视图时,我的代码至少用于记录,但是50%的时间我收到此错误:
回溯: path_info = request._headers.environ ['PATH_INFO'] AttributeError:'NoneType'对象没有属性'environ'
错误似乎集中在我的html文件(如css文件)中的eariler上,而html文件底部的.js文件有时可以正常工作。
所以基本上我不知道我是否接近或完全走错了方向来解决问题。有人知道这样做的正确方法吗?
答案 0 :(得分:1)
您确定,此路由会成功服务任何请求吗? 实现目标的可能性包括:WSGI中间件,Pyramid Tween或自定义事件订阅者。
自定义订阅者可能是最容易的用户。在创建响应之前调用此订阅者,因此无法知道响应代码,内容等。 要完成此任务,您可以添加请求完成回调或使用其他方法之一。
from pyramid.events import NewRequest
from pyramid.events import subscriber
@subscriber(NewRequest)
def static_logger(event):
logger = logging.getLogger('static')
request = event.request
if request.path_info.startswith('/static'):
logger.info('static request: {} {}'.format(request.path_info,
request.query_string))
并在development.ini中激活记录器:
[loggers]
keys = root, static
[logger_static]
level = DEBUG
handlers = console
qualname = static