【发布时间】:2019-02-20 19:21:04
【问题描述】:
如何检查响应是否是 Flask 中的文件,或者更具体地说 - 如果是文件,如何获取响应的文件名?
最终目标是获取响应的文件扩展名,即(.js、.css、.js.map 等...)。
这是dir(response) 的有用信息
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_ensure_sequence', '_get_mimetype_params', '_is_range_request_processable', '_on_close', '_process_range_request', '_status', '_status_code', '_wrap_response', 'accept_ranges', 'add_etag', 'age', 'allow', 'autocorrect_location_header', 'automatically_set_content_length', 'cache_control', 'calculate_content_length', 'call_on_close', 'charset', 'close', 'content_encoding', 'content_language', 'content_length', 'content_location', 'content_md5', 'content_range', 'content_type', 'data', 'date', 'default_mimetype', 'default_status', 'delete_cookie', 'direct_passthrough', 'expires', 'force_type', 'freeze', 'from_app', 'get_app_iter', 'get_data', 'get_etag', 'get_wsgi_headers', 'get_wsgi_response', 'headers', 'implicit_sequence_conversion', 'is_sequence', 'is_streamed', 'iter_encoded', 'last_modified', 'location', 'make_conditional', 'make_sequence', 'max_cookie_size', 'mimetype', 'mimetype_params', 'response', 'retry_after', 'set_cookie', 'set_data', 'set_etag', 'status', 'status_code', 'stream', 'vary', 'www_authenticate']
检查response.response 的类型,有时是<class 'werkzeug.wsgi.FileWrapper'>,有时是<class 'tuple'>,如果是tuple,它似乎不包含@987654330 @
我可以if hasattr(response.response, 'file'):
但在这一点上,我开始觉得我正在做的事情真的很糟糕,而不是我应该如何访问 Flask 响应中的文件名。
总结一下,检查响应是否为文件的“正确”方法是什么,如果是,获取文件扩展名?
【问题讨论】:
-
请发布您的代码
标签: python python-3.x flask