utils: ignore URL parameters with a None value (#29242)
This commit is contained in:
parent
5095f90afc
commit
c39e847d36
|
@ -264,6 +264,8 @@ def make_url(to, args=(), kwargs={}, keep_params=False, params=None, append=None
|
||||||
If you pass a request you can ask to keep params from it, exclude some
|
If you pass a request you can ask to keep params from it, exclude some
|
||||||
of them or include only a subset of them.
|
of them or include only a subset of them.
|
||||||
You can set parameters or append to existing one.
|
You can set parameters or append to existing one.
|
||||||
|
If a parameter value is None, it clears the parameter from the URL, if
|
||||||
|
the parameter was appended, it's just ignored.
|
||||||
'''
|
'''
|
||||||
if resolve:
|
if resolve:
|
||||||
url = resolve_url(to, *args, **kwargs)
|
url = resolve_url(to, *args, **kwargs)
|
||||||
|
@ -285,13 +287,17 @@ def make_url(to, args=(), kwargs={}, keep_params=False, params=None, append=None
|
||||||
url_params.setlist(key, request.GET.getlist(key))
|
url_params.setlist(key, request.GET.getlist(key))
|
||||||
if params:
|
if params:
|
||||||
for key, value in params.iteritems():
|
for key, value in params.iteritems():
|
||||||
if isinstance(value, (tuple, list)):
|
if value is None:
|
||||||
|
url_params.pop(key, None)
|
||||||
|
elif isinstance(value, (tuple, list)):
|
||||||
url_params.setlist(key, value)
|
url_params.setlist(key, value)
|
||||||
else:
|
else:
|
||||||
url_params[key] = value
|
url_params[key] = value
|
||||||
if append:
|
if append:
|
||||||
for key, value in append.iteritems():
|
for key, value in append.iteritems():
|
||||||
if isinstance(value, (tuple, list)):
|
if value is None:
|
||||||
|
continue
|
||||||
|
elif isinstance(value, (tuple, list)):
|
||||||
url_params.extend({key: value})
|
url_params.extend({key: value})
|
||||||
else:
|
else:
|
||||||
url_params.appendlist(key, value)
|
url_params.appendlist(key, value)
|
||||||
|
|
Loading…
Reference in New Issue