Anuranjit Maindola
Anuranjit Maindola

Reputation: 1507

URL regex in django for GET request

I have a django URL

      url(r'^my/url/(?P<number>[0-9]{10})/$',My.as_view()),

and the request URL is

      my/url/?number=9876543210

The view is a JSONResponseView

class My(JSONResponseView):

    def __init__(self,*args,**kwargs):
         super(SendMobileLinkResponse,self).__init__(self,**kwargs)

    def get(self,request, *args, **kwargs):
        return self.render_to_response({"test": "uu"})

I am getting a 404 for the the url?

Upvotes: 0

Views: 639

Answers (2)

Alasdair
Alasdair

Reputation: 309039

As Rexford says in their answer, with Django you would normally avoid using get parameters in your url, and use something like /my/url/9876543210/ instead.

If you do want to use GET parameters, don't include them in your url pattern.

url(r'^my/url/$',My.as_view()),

You can access the GET parameters in the view:

def get(self,request, *args, **kwargs):
    number = self.request.GET.get('number', '') # default to ' '
    return self.render_to_response({"number": number})

Upvotes: 1

KhoPhi
KhoPhi

Reputation: 9537

Please try this:

my/url/9876543210

Django believes in (of which I've also come to believe in) clean URLs. So your regex is catching

my/url/9876543210 

instead of

my/url/?numbers=9876543210

Upvotes: 2

Related Questions