django中的URL正则表达式用于GET请求

时间:2014-12-06 18:53:48

标签: regex django url django-views

我有一个django网址

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

,请求网址为

      my/url/?number=9876543210

视图是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"})

我的网址是404?

2 个答案:

答案 0 :(得分:2)

请试试这个:

my/url/9876543210

Django相信(其中我也相信)干净的URL。所以你的正则表达式正在赶上

my/url/9876543210 

而不是

my/url/?numbers=9876543210

答案 1 :(得分:1)

正如Rexford在回答中所说,使用Django,您通常会避免在网址中使用get参数,而是使用类似/my/url/9876543210/的内容。

如果您确实想使用GET参数,请不要将它们包含在您的网址格式中。

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

您可以在视图中访问GET参数:

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