6

レイアウト付きのビューが与えられた場合、静的ファイル (本質的に CSS と JS) をビュー ファイルから <head> にロードするにはどうすればよいですか?

レイアウト.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{=T.accepted_language or 'en'}}">
    <head>
        <title>{{=response.title or request.application}}</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <!-- include requires CSS files
        {{response.files.append(URL(request.application,'static','base.css'))}}
        {{response.files.append(URL(request.application,'static','ez-plug-min.css'))}}
        -->
        {{include 'web2py_ajax.html'}}
    </head>
    <body>
        {{include}}
    </body>
</html>

myview.html

{{extend 'layout.html'}}
{{response.files.append(URL(r=request,c='static',f='myview.css'))}}

<h1>Some header</h1>
<div>
    some content
</div>

上記の例では、「myview.css」ファイルは web2py によって無視されるか、ブラウザによって取り除かれます。

では、この CSS ファイルのようなページ固有のファイルを読み込む最善の方法は何でしょうか? すべての静的ファイルをレイアウトに詰め込みたくありません。

4

1 に答える 1

7

myview.html で、最初の 2 行を反転します

{{response.files.append(URL(r=request,c='static',f='myview.css'))}}
{{extend 'layout.html'}}

1.78.1 と 1.78.2 にはバグがあり、これが機能しないことに注意してください。同日に1.78.3で修正されました。response.file.append(...) は、それを必要とするコントローラー アクションに移動することもできます。拡張前にロジックを配置することは想定されていませんが、拡張ビューに渡される変数を定義します。

于 2010-05-21T04:44:09.573 に答える