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
|
||||
of them or include only a subset of them.
|
||||
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:
|
||||
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))
|
||||
if params:
|
||||
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)
|
||||
else:
|
||||
url_params[key] = value
|
||||
if append:
|
||||
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})
|
||||
else:
|
||||
url_params.appendlist(key, value)
|
||||
|
|
Loading…
Reference in New Issue