Added support for anchor link generation.
This commit is contained in:
parent
d04c9a61e3
commit
1759d8e4d8
3 changed files with 22 additions and 1 deletions
3
CHANGES
3
CHANGES
|
|
@ -8,6 +8,9 @@ Version 0.9
|
||||||
|
|
||||||
Relase date to be decided, codename to be chosen.
|
Relase date to be decided, codename to be chosen.
|
||||||
|
|
||||||
|
- The :func:`flask.url_for` function now can generate anchors to the
|
||||||
|
generated links.
|
||||||
|
|
||||||
Version 0.8.1
|
Version 0.8.1
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import mimetypes
|
||||||
from time import time
|
from time import time
|
||||||
from zlib import adler32
|
from zlib import adler32
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
|
from werkzeug.urls import url_quote
|
||||||
|
|
||||||
# try to load the best simplejson implementation available. If JSON
|
# try to load the best simplejson implementation available. If JSON
|
||||||
# is not installed, we add a failing class.
|
# is not installed, we add a failing class.
|
||||||
|
|
@ -184,9 +185,13 @@ def url_for(endpoint, **values):
|
||||||
|
|
||||||
For more information, head over to the :ref:`Quickstart <url-building>`.
|
For more information, head over to the :ref:`Quickstart <url-building>`.
|
||||||
|
|
||||||
|
.. versionadded:: 0.9
|
||||||
|
The `_anchor` parameter was added.
|
||||||
|
|
||||||
:param endpoint: the endpoint of the URL (name of the function)
|
:param endpoint: the endpoint of the URL (name of the function)
|
||||||
:param values: the variable arguments of the URL rule
|
:param values: the variable arguments of the URL rule
|
||||||
:param _external: if set to `True`, an absolute URL is generated.
|
:param _external: if set to `True`, an absolute URL is generated.
|
||||||
|
:param _anchor: if provided this is added as anchor to the URL.
|
||||||
"""
|
"""
|
||||||
ctx = _request_ctx_stack.top
|
ctx = _request_ctx_stack.top
|
||||||
blueprint_name = request.blueprint
|
blueprint_name = request.blueprint
|
||||||
|
|
@ -204,8 +209,12 @@ def url_for(endpoint, **values):
|
||||||
elif endpoint.startswith('.'):
|
elif endpoint.startswith('.'):
|
||||||
endpoint = endpoint[1:]
|
endpoint = endpoint[1:]
|
||||||
external = values.pop('_external', False)
|
external = values.pop('_external', False)
|
||||||
|
anchor = values.pop('_anchor', None)
|
||||||
ctx.app.inject_url_defaults(endpoint, values)
|
ctx.app.inject_url_defaults(endpoint, values)
|
||||||
return ctx.url_adapter.build(endpoint, values, force_external=external)
|
rv = ctx.url_adapter.build(endpoint, values, force_external=external)
|
||||||
|
if anchor is not None:
|
||||||
|
rv += '#' + url_quote(anchor)
|
||||||
|
return rv
|
||||||
|
|
||||||
|
|
||||||
def get_template_attribute(template_name, attribute):
|
def get_template_attribute(template_name, attribute):
|
||||||
|
|
|
||||||
|
|
@ -288,6 +288,15 @@ class LoggingTestCase(FlaskTestCase):
|
||||||
self.assert_equal(rv.status_code, 500)
|
self.assert_equal(rv.status_code, 500)
|
||||||
self.assert_equal(rv.data, 'Hello Server Error')
|
self.assert_equal(rv.data, 'Hello Server Error')
|
||||||
|
|
||||||
|
def test_url_for_with_anchor(self):
|
||||||
|
app = flask.Flask(__name__)
|
||||||
|
@app.route('/')
|
||||||
|
def index():
|
||||||
|
return '42'
|
||||||
|
with app.test_request_context():
|
||||||
|
self.assert_equal(flask.url_for('index', _anchor='x y'),
|
||||||
|
'/#x%20y')
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
suite = unittest.TestSuite()
|
suite = unittest.TestSuite()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue