forked from orbit-oss/flask
strip static url trailing slash at assignment
This commit is contained in:
parent
a12bf290da
commit
ed9ab2d3b6
5 changed files with 21 additions and 19 deletions
|
|
@ -38,6 +38,8 @@ Unreleased
|
||||||
dependency to >= 0.15. :issue:`3022`
|
dependency to >= 0.15. :issue:`3022`
|
||||||
- Support ``static_url_path`` that ends with a forward slash.
|
- Support ``static_url_path`` that ends with a forward slash.
|
||||||
:issue:`3134`
|
:issue:`3134`
|
||||||
|
- Support empty ``static_folder`` without requiring setting an empty
|
||||||
|
``static_url_path`` as well. :pr:`3124`
|
||||||
- :meth:`jsonify` supports :class:`dataclasses.dataclass` objects.
|
- :meth:`jsonify` supports :class:`dataclasses.dataclass` objects.
|
||||||
:pr:`3195`
|
:pr:`3195`
|
||||||
- Allow customizing the :attr:`Flask.url_map_class` used for routing.
|
- Allow customizing the :attr:`Flask.url_map_class` used for routing.
|
||||||
|
|
|
||||||
|
|
@ -408,11 +408,8 @@ class Flask(_PackageBoundObject):
|
||||||
self, import_name, template_folder=template_folder, root_path=root_path
|
self, import_name, template_folder=template_folder, root_path=root_path
|
||||||
)
|
)
|
||||||
|
|
||||||
if static_url_path is not None:
|
self.static_url_path = static_url_path
|
||||||
self.static_url_path = static_url_path
|
self.static_folder = static_folder
|
||||||
|
|
||||||
if static_folder is not None:
|
|
||||||
self.static_folder = static_folder
|
|
||||||
|
|
||||||
if instance_path is None:
|
if instance_path is None:
|
||||||
instance_path = self.auto_find_instance_path()
|
instance_path = self.auto_find_instance_path()
|
||||||
|
|
@ -594,7 +591,7 @@ class Flask(_PackageBoundObject):
|
||||||
bool(static_host) == host_matching
|
bool(static_host) == host_matching
|
||||||
), "Invalid static_host/host_matching combination"
|
), "Invalid static_host/host_matching combination"
|
||||||
self.add_url_rule(
|
self.add_url_rule(
|
||||||
self.static_url_path.rstrip("/") + "/<path:filename>",
|
self.static_url_path + "/<path:filename>",
|
||||||
endpoint="static",
|
endpoint="static",
|
||||||
host=static_host,
|
host=static_host,
|
||||||
view_func=self.send_static_file,
|
view_func=self.send_static_file,
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ class Blueprint(_PackageBoundObject):
|
||||||
|
|
||||||
if self.has_static_folder:
|
if self.has_static_folder:
|
||||||
state.add_url_rule(
|
state.add_url_rule(
|
||||||
self.static_url_path.rstrip("/") + "/<path:filename>",
|
self.static_url_path + "/<path:filename>",
|
||||||
view_func=self.send_static_file,
|
view_func=self.send_static_file,
|
||||||
endpoint="static",
|
endpoint="static",
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -965,24 +965,27 @@ class _PackageBoundObject(object):
|
||||||
)
|
)
|
||||||
del _get_static_folder, _set_static_folder
|
del _get_static_folder, _set_static_folder
|
||||||
|
|
||||||
def _get_static_url_path(self):
|
@property
|
||||||
|
def static_url_path(self):
|
||||||
|
"""The URL prefix that the static route will be accessible from.
|
||||||
|
|
||||||
|
If it was not configured during init, it is derived from
|
||||||
|
:attr:`static_folder`.
|
||||||
|
"""
|
||||||
if self._static_url_path is not None:
|
if self._static_url_path is not None:
|
||||||
return self._static_url_path
|
return self._static_url_path
|
||||||
|
|
||||||
if self.static_folder is not None:
|
if self.static_folder is not None:
|
||||||
basename = os.path.basename(self.static_folder)
|
basename = os.path.basename(self.static_folder)
|
||||||
return "/" + basename if basename else ""
|
return ("/" + basename).rstrip("/")
|
||||||
|
|
||||||
|
@static_url_path.setter
|
||||||
|
def static_url_path(self, value):
|
||||||
|
if value is not None:
|
||||||
|
value = value.rstrip("/")
|
||||||
|
|
||||||
def _set_static_url_path(self, value):
|
|
||||||
self._static_url_path = value
|
self._static_url_path = value
|
||||||
|
|
||||||
static_url_path = property(
|
|
||||||
_get_static_url_path,
|
|
||||||
_set_static_url_path,
|
|
||||||
doc="The URL prefix that the static route will be registered for.",
|
|
||||||
)
|
|
||||||
del _get_static_url_path, _set_static_url_path
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def has_static_folder(self):
|
def has_static_folder(self):
|
||||||
"""This is ``True`` if the package bound object's container has a
|
"""This is ``True`` if the package bound object's container has a
|
||||||
|
|
|
||||||
|
|
@ -1427,14 +1427,14 @@ def test_static_url_path_with_ending_slash():
|
||||||
assert flask.url_for("static", filename="index.html") == "/foo/index.html"
|
assert flask.url_for("static", filename="index.html") == "/foo/index.html"
|
||||||
|
|
||||||
|
|
||||||
def test_static_url_null_path(app):
|
def test_static_url_empty_path(app):
|
||||||
app = flask.Flask(__name__, static_folder='', static_url_path='')
|
app = flask.Flask(__name__, static_folder='', static_url_path='')
|
||||||
rv = app.test_client().open('/static/index.html', method='GET')
|
rv = app.test_client().open('/static/index.html', method='GET')
|
||||||
assert rv.status_code == 200
|
assert rv.status_code == 200
|
||||||
rv.close()
|
rv.close()
|
||||||
|
|
||||||
|
|
||||||
def test_static_url_null_path_defaulting(app):
|
def test_static_url_empty_path_default(app):
|
||||||
app = flask.Flask(__name__, static_folder='')
|
app = flask.Flask(__name__, static_folder='')
|
||||||
rv = app.test_client().open('/static/index.html', method='GET')
|
rv = app.test_client().open('/static/index.html', method='GET')
|
||||||
assert rv.status_code == 200
|
assert rv.status_code == 200
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue