Как проверить, является ли ответ файлом в 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
он не содержит file
Я могу сделать if hasattr(response.response, 'file'):
Но в этот момент я начинаю чувствовать, что то, что я делаю, действительно бесполезно, а не так, как должнополучите доступ к имени файла в ответе во Flask.
Подводя итог, каков "правильный" способ проверить, является ли ответ файлом, и если да, получить расширение файла?