2013-10-30 64 views
0

我有一个运行在Google App Engine for Python上的网站。我已经继承了代码库,并且正在努力将自己的东西拼凑在一起。我试图完成在网站上创建新页面并从工具栏链接到它的“简单”任务。因此,我在主目录中创建了一个新文件,称为mypage.html。新文件出错,404未找到,Python引擎引擎

下面是我使用的链接代码,index.html文件中:

​​

下面是我用处理链接的代码,如我的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也。非常难倒在这里。任何帮助是极大的赞赏!

回答

1

注意您的处理程序中的/mypage/?。这至少要匹配,但你的链接是'/mypage'所以你得到了404。

+0

相关链接以同样的方式格式化,所以我也是这样做的。我做了你建议的改变(链接到'/ mypage /'),但仍然得到相同的404 Not Found。 –

+0

也尝试改变处理程序,但没有骰子。 –

+0

你没有在app.yaml中包含你的映射。问题将是处理程序映射的URL。你还改变了什么?机会是你改变它也是错误的。你是否理解你为你的处理程序映射定义的正则表达式? –

0

几件事情。 我强烈建议使用gae-boilerplate这样的样板应用程序。这将有助于谷歌appengine的这些第一次问题。它很轻便,可以让你开始快速制作自己的项目。我推荐它的原因是因为默认情况下它使用

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)