Last active
August 17, 2024 20:05
-
-
Save benbacardi/227f924ec1d9bedd242b to your computer and use it in GitHub Desktop.
Django reverse with a querystring
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.utils.http import urlencode | |
def reverse_querystring(view, urlconf=None, args=None, kwargs=None, current_app=None, query_kwargs=None): | |
'''Custom reverse to handle query strings. | |
Usage: | |
reverse('app.views.my_view', kwargs={'pk': 123}, query_kwargs={'search': 'Bob'}) | |
''' | |
base_url = reverse(view, urlconf=urlconf, args=args, kwargs=kwargs, current_app=current_app) | |
if query_kwargs: | |
return '{}?{}'.format(base_url, urlencode(query_kwargs)) | |
return base_url |
Good spot! Fixed.
How on earth did you come across this snippet anyway!?
Came across this while Googling for 'django url reverse with query string'. I don't think https://code.djangoproject.com/ticket/25582 will be a core enhancement anytime soon. Great solution!
Ditto. I can't believe it's not available yet. Thanks Ben!
This is a neat function. Thanks @benbacardi . Under what license do you provide this gist? Could you please add it, so we can reuse it?
@GrazingScientist take it and use it as you wish, no attribution required! It's a simple snippet :)
Thanks!!
Good ol' google search pointed me here :)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi ! Great solution ! 👍
query_kwargs={'search', 'Bob'}
should bequery_kwargs={'search': 'Bob'}
For the other hand, you missed a parenthesis in:
'{}?{}'.format(base_url, urlencode(query_kwargs))