为什么我的正则表达式在Django中解析了这个URL?

时间:2014-08-15 22:26:46

标签: python regex django django-urls

目前在Django工作,我尝试进行设置,以便一个页面上的表单调用特定的URL,为其呈现适当的视图。我在解析网址的正则表达式方面遇到了问题,因为它无法读取值' \?'作为一个逃脱的问号,这是我认为应该做的。以下RE检查Pythex。

当应用程序提交表单时,它会调用URL:

http://127.0.0.1:8000/map/?street=62+torrey+pines+cove&city=san+diego&state=CA&radius=50&drg=4

在我的项目级别urls.py文件中,我有以下内容:

url(r'^map/', include('healthcare_search.urls', namespace="healthcare_search")),

这会调用我的应用级别urls.py文件,我有:

    url(r'^\?street=(?P<street>[a-z0-9+]+)&city=(?P<city>[a-z+]+)&state=(?P<state>[a-z]{2})&radius=(?P<radius>[0-9]{1,3})&drg=(?P<drg>[0-9]{1,3})', views.map_hospitals, name = "map_hospitals"),

这只会导致404错误,说网址与任何模式都不匹配。我知道这是一个RE问题,因为我从应用级RE中删除了所有内容,并仅提交了http://127.0.0.1:8000/map/以查看它是否会调用正确的视图,它是否已成功完成。事情似乎在&#39; \?&#39;上分崩离析。我有什么想法我做错了吗?

作为一个说明,这是我第一次写出正则表达式,所以如果不清楚或写得不好,我会道歉。

1 个答案:

答案 0 :(得分:2)

您不希望以这种方式访问​​变量。更好的选择是从请求中获取它们,因为它们可以在request的变量字典中使用。在您的视图中,您可以通过street获取request.GET.get('street', None)的值,如果street在请求中,则返回值;否则返回None