我在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。在这里很难过。非常感谢任何帮助!
答案 0 :(得分:1)
请注意处理程序中的/mypage/?
。至少必须匹配,但您的链接是'/mypage'
,因此您获得了404。
答案 1 :(得分:0)
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)