diff options
| author | Christopher Lambacher <chris@kateandchris.net> | 2012-04-27 11:06:59 -0400 |
|---|---|---|
| committer | Christopher Lambacher <chris@kateandchris.net> | 2012-04-27 11:06:59 -0400 |
| commit | 0e0c83fabc77e2888e26c56df9acda7a5c839530 (patch) | |
| tree | 3239425a90e4d47f189765625528f2ae298522d2 | |
| parent | a79f67b6036835a3945d95d7bd9a27d0934c6f8f (diff) | |
| download | pyramid-0e0c83fabc77e2888e26c56df9acda7a5c839530.tar.gz pyramid-0e0c83fabc77e2888e26c56df9acda7a5c839530.tar.bz2 pyramid-0e0c83fabc77e2888e26c56df9acda7a5c839530.zip | |
Don't add a ? to url if query string is empty.
| -rw-r--r-- | pyramid/tests/test_url.py | 17 | ||||
| -rw-r--r-- | pyramid/url.py | 8 |
2 files changed, 23 insertions, 2 deletions
diff --git a/pyramid/tests/test_url.py b/pyramid/tests/test_url.py index 0dff1e648..50deb63f3 100644 --- a/pyramid/tests/test_url.py +++ b/pyramid/tests/test_url.py @@ -113,6 +113,14 @@ class TestURLMethodsMixin(unittest.TestCase): self.assertEqual(result, 'http://example.com:5432/context/a?a=hi+there&b=La+Pe%C3%B1a') + def test_resource_url_with_query_empty(self): + request = self._makeOne() + self._registerResourceURL(request.registry) + context = DummyContext() + result = request.resource_url(context, 'a', query=[]) + self.assertEqual(result, + 'http://example.com:5432/context/a') + def test_resource_url_anchor_is_after_root_when_no_elements(self): request = self._makeOne() self._registerResourceURL(request.registry) @@ -334,6 +342,15 @@ class TestURLMethodsMixin(unittest.TestCase): self.assertEqual(result, 'http://example.com:5432/1/2/3?q=1') + def test_route_url_with_empty_query(self): + from pyramid.interfaces import IRoutesMapper + request = self._makeOne() + mapper = DummyRoutesMapper(route=DummyRoute('/1/2/3')) + request.registry.registerUtility(mapper, IRoutesMapper) + result = request.route_url('flub', _query={}) + self.assertEqual(result, + 'http://example.com:5432/1/2/3') + def test_route_url_with_app_url(self): from pyramid.interfaces import IRoutesMapper request = self._makeOne() diff --git a/pyramid/url.py b/pyramid/url.py index 022867967..dd83bb631 100644 --- a/pyramid/url.py +++ b/pyramid/url.py @@ -218,7 +218,9 @@ class URLMethodsMixin(object): port = None if '_query' in kw: - qs = '?' + urlencode(kw.pop('_query'), doseq=True) + query = kw.pop('_query') + if query: + qs = '?' + urlencode(query, doseq=True) if '_anchor' in kw: anchor = kw.pop('_anchor') @@ -494,7 +496,9 @@ class URLMethodsMixin(object): anchor = '' if 'query' in kw: - qs = '?' + urlencode(kw['query'], doseq=True) + query = kw['query'] + if query: + qs = '?' + urlencode(query, doseq=True) if 'anchor' in kw: anchor = kw['anchor'] |
