2013-10-30 44 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)