0

我有一个在 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。在这里非常难过。任何帮助是极大的赞赏!

4

2 回答 2

1

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

于 2013-10-30T05:54:33.743 回答
0

一些东西。我强烈建议使用像gae-boilerplate这样的样板应用程序。这将有助于解决谷歌应用引擎的很多这些第一次出现的问题。它很轻巧,可以帮助您快速开始制作自己的项目。我推荐它的原因是因为默认情况下它通过使用解决严格的斜线问题(/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)
于 2013-10-30T06:02:27.423 回答