Hi Matthew, Are you aware of Python's urlencode? https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlencode
It sounds like you want something like: def reverse_with_querystring(viewname, data=None): return "{url}{querystring}".format(url=reverse(viewname), querystring='?' + urlencode(data) if data else '') Collin On Mon, Mar 5, 2018 at 5:35 AM, Matthew Bridges < matthew.brid...@wearefarm.com> wrote: > Hello all, first contribution to the dev community here, I wanted to get > some thoughts on a feature that I thought might be a helpful. > > I notice myself writing this pattern a lot when constructing redirect URLS. > > ``` > def some_view(request): > querystring = "?some-key={some_key}&another- > key={another_key}".format(some_key=some_value, another_key=another_value) > url = "{url}{querystring}".format(url=reverse('some_app:some_view'), > querystring=querystring) > return HttpResponseRedirect(url) > ``` > > I was thinking about writing a helper function that grabbed a reversed > URL, and unpacked a data dict into a query string. Building up strings > feels nasty, and doing this in a functional manner feels much nicer. > > Pseudo code might look something like: > > ``` > def reverse_with_querystring(viewname, data=None) > # get viewname > > # loop over data > > # IRI encode url > > # return constructed URL > ``` > > ``` > url = reverse_with_querystring('myapp:myview', data={'keyone': '123', > 'keytwo' 321) > ``` > > Questions: > - Do other people use this syntax to build up querystrings / am I solving > a problem that doesn't need solving? > - Is there already a helper that allows this behaviour? > - If the function were to be included, would django/urls be the > appropriate module, given that the function utilises reverse? Or perhaps > somewhere else. The behaviour would be similar to get_absolute_url type > functions. > - Am I doing this right? > > Thanks :) > > -- > You received this message because you are subscribed to the Google Groups > "Django developers (Contributions to Django itself)" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to django-developers+unsubscr...@googlegroups.com. > To post to this group, send email to django-developers@googlegroups.com. > Visit this group at https://groups.google.com/group/django-developers. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/django-developers/7846f70a-ddf9-47fe-b99f- > 915d2ff7ce48%40googlegroups.com > <https://groups.google.com/d/msgid/django-developers/7846f70a-ddf9-47fe-b99f-915d2ff7ce48%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at https://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAFO84S6gUxTurNqD5KgqP_k7O5UWfddceAjWN8ujuq9AJ%3DJG%3DQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.