目前在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;上分崩离析。我有什么想法我做错了吗?
作为一个说明,这是我第一次写出正则表达式,所以如果不清楚或写得不好,我会道歉。
答案 0 :(得分:2)
您不希望以这种方式访问变量。更好的选择是从请求中获取它们,因为它们可以在request
的变量字典中使用。在您的视图中,您可以通过street
获取request.GET.get('street', None)
的值,如果street
在请求中,则返回值;否则返回None
。