服务器无法将URL与处理程序匹配(HTTP 404错误)

时间:2014-11-14 15:42:39

标签: google-app-engine python-2.7 google-cloud-platform

我正在研究一些旨在在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的初学者......

1 个答案:

答案 0 :(得分:1)

您应该只尝试匹配URL的路径部分 - 不包括查询部分(?及其后的所有内容)。 '/search'因为你的模式就足够了。