0

#include動作していないようで、「500 Internal Server Error」が表示されます。インクルードなしで同じコードを試し、すべてのコードを1つのファイルに入れてみましたが、うまくいきました。私はウェブフレームワークFlaskを使用しています

header.tmpl

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>$title</title>

        #for $css in $css_sheets
        <link rel="stylesheet" href="../$css">
        #end for
        #for $js in $js_scripts
        <script src="../$js"></script>
        #end for
    </head>
    <body> 

home.tmpl

#include "header.tmpl"
<p id="x">HELLO</p> 
#include "footer.tmpl"

フッター.tmpl

    </body>
</html> 

エンジン.py

from flask import Flask, redirect, request
from Cheetah.Template import Template

app = Flask(__name__)

css_list = ['css/main.css']
js_list = ['js/main.js']
default_title = 'Default Title'

namespace={
    'css_sheets' : css_list,
    'js_scripts' : js_list,
    'title' : default_title
}

@app.route('/')
def main_route():
    return redirect('/index')

@app.route('/index')
def index():
    namespace['title']= 'THIS IS THE INDEX'
    return render("cheetah/home.tmpl", namespace)

def render(template, context):
    """Helper function to make template rendering less painful."""
    return str(Template(file=template, namespaces=[context]))

if __name__ == "__main__":
    app.run()

2 つ目の質問は、header.tmpl の $css 変数と $js 変数についてです。

<link rel="stylesheet" href="../$css">$css が「css/main.css」に設定されていると動作します

<link rel="stylesheet" href="$css">$css が '../css/main.css' に設定されていると失敗し、変数の値を取得する代わりにプレーン テキスト '$css' として読み取ります。

何故ですか?

4

1 に答える 1

0

問題は、で使用されるパスが、#includeそれを呼び出すテンプレート (home.tmpl) に対して相対的ではなく、この場合は同じではない python ファイル (engine.py) であると考えたことです。そのため、プログラムは私が含めようとしていたファイルを見つけられませんでした。

../web/engine.py
../web/templates/home.tmpl
../web/templates/header.tmpl
../web/templates/footer.tmpl
../web/css/main.css
../web/js/main.js
于 2012-11-29T11:01:03.240 に答える