Skip to content Skip to sidebar Skip to footer

Django: Is There A Way To Know If A Url Is Valid In The Application?

Here's my goal: the user wants to login I make a button on each page with the urlback as a parameter, for example if we are on the page http://olivier.life/today, the button to lo

Solution 1:

Use resolve. There's an example that's very close to this use case in the docs. I think for your case you want something like:

defsome_view(request):
    redirect_target = request.GET.get('back')
    if redirect_target:
        try:
            resolve_match = django.core.urlresolvers.resolve(redirect_target)
        except django.core.urlresolvers.Resolver404:
            # do something on bad inputelse:
            return django.shortcuts.redirect(redirect_target)
    else:
        # empty string redirect target, or not provided at all# do something else

Solution 2:

You can use the urlresolver's resolve method, the method throws an exception if it can't resolve an URL, you can read more about urlresolver here:

from django.core.urlresolvers import resolve, Resolver404

defyourView(request):
  try:
    ifhasattr(request.GET, 'back'):
      resolve(request.GET['back'])
      return HttpResponseRedirect(request.GET['back'])
  except Resolver404:
      return Response('some other thing')

Post a Comment for "Django: Is There A Way To Know If A Url Is Valid In The Application?"