新文件出错,404 Not Found,App Engine for Python

时间:2013-10-30 05:40:06

标签: python html google-app-engine http-status-code-404 wsgi

我在Google App Engine for Python上运行了一个网站。我继承了代码库,并试图将自己拼凑起来。我正在尝试完成在网站上创建新页面并从工具栏链接到它的“简单”任务。所以,我创建了一个新文件,让我们在主目录中调用它mypage.html。

以下是我在index.html文件中用于链接的代码:

 <li {% if mypage_selected %}class='active'{% endif %}>
   <a href='/mypage'>My Page</a>
 </li>

这是我用来处理链接的代码,正如我在main.py文件中声明的那样:

class MyPagePage(BaseHandler):
  def get(self):
    template_values = {
      'mypage_selected': True,
      'session': self.session,
    }
    self.response.out.write(
      template.render(get_path("mypage.html"), template_values))

最后,我在这里添加了对页面的引用(也在main.py中):

app = webapp2.WSGIApplication([
  ('/', MainPage),
  ...
  ('/mypage/?', MyPagePage),
], debug=True, config=webapp2conf)

我的新文件确实在mypage.html上。但是,当我运行此链接时,链接会显示,但点击它会将我带到http://mydomain.net/mypage,这会产生404 Not Found错误。有什么想法会发生什么?

编辑:这是我app.yaml的处理程序部分:

handlers:
- url: /
  script: main.app
- url: /index\.html
  script: main.app
- url: /static
  static_dir: static
- url: /api.*
  script: api.app
- url: /blog/.*/edit/?
  script: dj.app
- url: /.*
  script: main.app

另外请注意:我尝试导航到mypage.html,这也给了我404。在这里很难过。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

请注意处理程序中的/mypage/?。至少必须匹配,但您的链接是'/mypage',因此您获得了404。

答案 1 :(得分:0)

一些事情。 我强烈建议使用像gae-boilerplate这样的样板应用程序。这将有助于谷歌appengine的许多这些第一次问题。它的重量轻,可以帮助您快速开始自己的项目。我推荐它的原因是因为默认情况下它通过使用

解决严格的斜杠问题(/ mypage和/ mypage /之间的差异)
from webapp2_extras.routes import RedirectRoute
from web.handlers import handlers
secure_scheme = 'https'

_routes = [
    RedirectRoute('/', handlers.MainPage, name='main', strict_slash=True),
    RedirectRoute('/mypage/', handlers.mypagepage, name='mypage', strict_slash=True),
    ...

在您的处理程序中,您可以:

class mypagepage(BaseHandler):
    @user_required
    def get(self):
        params = {}
        return self.render_template('mypage.html', **params)