0

jQuery を含めるかどうかを指定する if ステートメントを含む base.mako テンプレートがあります。

<head>
% if getattr(c, 'includeJQuery', False):
    <script type="text/javascript" src="jquery.js"></script>
% endif
...

いくつかのテンプレートは base.mako から継承しています。jQuery が必要な人もいれば、必要ない人もいます。

現時点では、レンダーを呼び出す前にコントローラーで属性を設定する必要があります

c.includeJQuery = True
return render('/jQueryTemplate.mako')

しかし、これは子テンプレート (つまり jQueryTemplate.mako) に直接入れるべきだと思います

継承前に追加してみた

<% c.includeJQuery = True %>
<%inherit file="/base.mako"/>\ 

しかし、それは機能しません。

任意のヒント?

ご協力ありがとうございました

4

2 に答える 2

3

テンプレートで「c」を使用しないでください。

<% includeJquery = True %>

% if includeJquery:
...
% endif

十分なはずです。

私はあなたがこれを間違っていると思います...あなたのベーステンプレートであなたはjqueryブロックのために空白のdefを作りそしてそれを呼ぶべきです。次に、継承されたテンプレートでブロックを再定義します。

base.mako:

<head>
${self.jquery()}
</head>

<%def name="jquery()"></%def>

次に、別のテンプレートでjqueryを追加します。

<%inherit file="base.mako />

<%def name="jquery()">
<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
</%def>
于 2010-12-29T05:20:08.437 に答える
2

さて、ライン以来

<script type="text/javascript" src="jquery.js"></script>

子テンプレートに jQueryScript %def を配置する他の js も追加する必要があります。

##jQueryTemplate.mako
<%def name="jQueryScript()">
    <script>
    </script>
</%def>

次に、ベースで存在するかどうかを確認し、それに応じてすべて追加します

#base.mako
%if hasattr(next, 'jQueryScript'):
    <script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
    ${next.jQueryScript()}
%endif

そのため、コントローラーに何も設定する必要はありません。

于 2010-10-13T12:22:37.220 に答える