djangoreverseurlconf

Including a querystring in a django.core.urlresolvers reverse() call


I'm trying to reverse a named URL and include a querystring in it. Basically, I've modified the login function, and I want to send ?next= in it.

Here's what I'm doing now: reverse(name) + "?next=" + reverse(redirect)

Here's what I'd like to do: reverse(name, kwargs = { 'next':reverse(redirect) } )

My URL for the login page (just as an example) looks like this:

url(r'^login/', custom_login, name = 'login'),

So how do I modify this whole thing (or call it) to include the next without having to concatenate it? It feels like an iffy solution at best.


Solution

  • You can't capture GET parameters in the url confs, so your method is correct.

    I generally prefer string formatting but it's the same thing.
    "%s?next=%s" % (reverse(name), reverse(redirect))

    http://docs.djangoproject.com/en/dev/topics/http/urls/#what-the-urlconf-searches-against

    The URLconf searches against the requested URL, as a normal Python string. This does not include GET or POST parameters, or the domain name.