2

チュートリアルに従って、Google App Engine (Python) でホストする予定のサイトのきれいな URL を作成しました。

問題は、サブディクショナリ内のインデックス ページが表示されないことです。

このアドレス http:// で正常にロードされる abc.html というファイルがあります。www.testsite.com/abc

しかし、コンテンツ領域に読み込まれないサブディレクトリ (xyz および 123) にインデックス ファイルがあります (コンテンツ領域の空白スペース)。

index.html を含むサブディレクトリ xyz: http://www.testsite.com/xyz

ディレクトリ xyz 内の index.html を含むサブディレクトリ 123: http://www.testsite.com/xyz/123

これが私が使用したコードです

app.yaml

application: testsite
version: 1
runtime: python
api_version: 1
threadsafe: yes

default_expiration: "1d"

handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css|swf|xml))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css|swf|xml))

- url: /.*
  script: main.py

main.py

import os
    from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template

class MainPage(webapp.RequestHandler):
   def get(self, p):
      if p:
         page = p + ".html"
      else:
         p = "main"
         page = p + ".html"

          if not os.path.exists(page):
         page = "404.html"

      template_values = {
            "page" : page,
                p: "first", 
      };

      path = os.path.join(os.path.dirname(__file__), 'index.html')
      self.response.out.write(template.render(path, template_values))

application = webapp.WSGIApplication([(r'/(.*)', MainPage)],debug=True)

def main():
   run_wsgi_app(application)

if __name__ == "__main__":
   main()

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   <title>TestTitle</title>
   <link href="/static/style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
   <div id="header">
            <ul>
                <li><a href="main">Home</a></li>
                <li><a href="abc">abc</a></li>
                <li><a href="xyz/123">xyz</a></li>
            </ul>
   </div>

   <div id="content">
      <!-- this is where content will be loaded -->

      {% if page %}
         {% include page %}
      {% else %}
         {% include "main.html" %}
      {% endif %}

   </div>

   <div id="sidebar">
      TestSideBar
   </div>

   <div id="footer">
      TestFooter
   </div>
</body>
</html>

PS: 私が従ったチュートリアルは、動的ページ + URL 書き換えガイドでした。動的ページの側面は実際には必要ありません。きれいな URL を機能させるチュートリアルが見つかりませんでした。

4

1 に答える 1

0

まず、app.yaml または main.py に誤りがあります。Python27 はより最新のランタイムであるため、app.yaml をお勧めします。次の app.yaml をお勧めします。

application: testsite
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: .*
  script: main.application

次に、サブディレクトリ内の index.html というファイルについて話しますが、それらはどこにもアクセスされません。代わりに、「xyz.html」と「xyz/123.html」にアクセスします。

代わりに、次のコードを抜粋して試してください。

        if p:
            page = os.path.join(p, "index.html")
        else:
            p = "main"
            page = "main.html"

ところで、インクルード タグではなく、テンプレートの継承を検討する必要があります。

于 2013-01-08T14:30:33.173 に答える