web.py では、たとえばexample.com/xに移動して、テンプレートフォルダー内のx.htmlというファイルに移動するように定義するにはどうすればよいですか?
web.py は非常に新しく、これを行う方法を知りたいです! 彼らのドキュメンテーションは、私には何も説明していません。
このページによると、次のようにできます。
urls = (
'/(.+)', 'your_handler_class'
)
class your_handler_class:
def GET(self, page):
print web.template.render('%s.html' % page)
getattr
それを渡すだけでrender
、URL 正規表現によってキャプチャされたページ名が使用されます。
urls = (
'/(.+)?', 'PageController'
)
render = web.template.render('templates/')
class PageController:
def GET(self, page='index'):
try:
return getattr(render, page)()
except AttributeError:
raise web.notfound()
これは、web.py での基本的な URL 処理です。
あなたの例では、次のようにします。
urls = (
"/x", "x"
)
これは、テンプレート用のディレクトリを定義し、そのディレクトリを 1 レベルの深さ (または任意の場所) に作成したことを前提としています。たとえば、次のようになります。
render = web.template.render('templates/')
次に、web.py は、通常は GET ハンドラーを使用してページをレンダリングするときに、テンプレート ディレクトリで x.html を検索します。
class x:
def GET(self):
return render.x()
この場合、クラスとテンプレートの両方に x という名前が付けられていますが、そうである必要はありません。
たとえば、テンプレートに 'xyz.html' という名前を付けて で呼び出しreturn render.xyz()
、クラスに 'x' という名前を付けて /x にマップすることができます。