我正在研究一些旨在在Google App Engine中运行的python代码。在其中一个处理程序中,我试图通过使用如下形式的邮件发送一些数据:
<form action="/search" method="GET" enctype="multipart/form-data">
<fieldset>
<legend>File Search</legend>
Search Tag:</br>
<input type="text" name="search_text"></br>
<input type="submit" value="Search">
</fieldset>
</form>
因此,当用户按下搜索按钮时,URL看起来像这样:
localhost:8080/search?search_text=ico
问题是,当浏览器重定向到那里时,我总是会收到404错误。我认为问题是由于某种原因,GAE无法将URL与我的app变量中的(URL,处理程序)对列表相匹配。它看起来像这样:
app = webapp2.WSGIApplication([... ('/search([^/]+)', SearchHandler) ...], debug=True)
我真的不知道为什么会这样,因为当我在python命令行解释器中尝试模式并且它可以工作时:
>>> import re
>>> pat = "/search([^/]+)"
>>> t = "/search?search_text=ico"
>>> print re.match(pat, t)
<_sre.SRE_Match object at 0x01E449E0>
我认为这与&#39;?&#39;有关。但是我尝试使用像&#39; \?&#39;这样的东西进行匹配。在模式中,它不起作用。非常感谢帮助,谢谢!我还想指出我是GAE的初学者......
答案 0 :(得分:1)
您应该只尝试匹配URL的路径部分 - 不包括查询部分(?及其后的所有内容)。 '/search'
因为你的模式就足够了。