mirror of https://github.com/pallets/flask.git
Expand docs on send_file option hook, #433.
This commit is contained in:
parent
f4a31db9f6
commit
146088d580
4
CHANGES
4
CHANGES
|
|
@ -48,6 +48,10 @@ Relase date to be decided, codename to be chosen.
|
|||
- View functions can now return a tuple with the first instance being an
|
||||
instance of :class:`flask.Response`. This allows for returning
|
||||
``jsonify(error="error msg"), 400`` from a view function.
|
||||
- :class:`flask.Flask` now provides a `get_static_file_options` hook for
|
||||
subclasses to override behavior of serving static files through Flask,
|
||||
optionally by filename, which for example allows changing cache controls by
|
||||
file extension.
|
||||
|
||||
|
||||
Version 0.8.1
|
||||
|
|
|
|||
|
|
@ -653,8 +653,22 @@ class _PackageBoundObject(object):
|
|||
self.template_folder))
|
||||
|
||||
def get_static_file_options(self, filename):
|
||||
"""Function used internally to determine what keyword arguments
|
||||
to send to :func:`send_from_directory` for a specific file."""
|
||||
"""Provides keyword arguments to send to :func:`send_from_directory`.
|
||||
|
||||
This allows subclasses to change the behavior when sending files based
|
||||
on the filename. For example, to set the cache timeout for .js files
|
||||
to 60 seconds (note the options are keywords for :func:`send_file`)::
|
||||
|
||||
class MyFlask(flask.Flask):
|
||||
def get_static_file_options(self, filename):
|
||||
options = super(MyFlask, self).get_static_file_options(filename)
|
||||
if filename.lower().endswith('.js'):
|
||||
options['cache_timeout'] = 60
|
||||
options['conditional'] = True
|
||||
return options
|
||||
|
||||
.. versionaded:: 0.9
|
||||
"""
|
||||
return {}
|
||||
|
||||
def send_static_file(self, filename):
|
||||
|
|
|
|||
|
|
@ -213,8 +213,6 @@ class SendfileTestCase(FlaskTestCase):
|
|||
self.assert_equal(cc.max_age, 12 * 60 * 60)
|
||||
# override get_static_file_options with some new values and check them
|
||||
class StaticFileApp(flask.Flask):
|
||||
def __init__(self):
|
||||
super(StaticFileApp, self).__init__(__name__)
|
||||
def get_static_file_options(self, filename):
|
||||
opts = super(StaticFileApp, self).get_static_file_options(filename)
|
||||
opts['cache_timeout'] = 10
|
||||
|
|
@ -222,7 +220,7 @@ class SendfileTestCase(FlaskTestCase):
|
|||
# keyword arg in the guts
|
||||
opts['conditional'] = True
|
||||
return opts
|
||||
app = StaticFileApp()
|
||||
app = StaticFileApp(__name__)
|
||||
with app.test_request_context():
|
||||
rv = app.send_static_file('index.html')
|
||||
cc = parse_cache_control_header(rv.headers['Cache-Control'])
|
||||
|
|
|
|||
Loading…
Reference in New Issue