Frage

Ich habe eine base.mako Vorlage mit einer if-Anweisung einschließen oder nicht jQuery

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

Mehrere Vorlagen erben von base.mako, jemand muss jQuery, jemand dies nicht tun.

Im Moment habe ich das Attribut in der Steuerung setzen, bevor machen Aufruf

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

, aber ich denke, das sollte geht direkt in Kind Vorlage (das heißt jQueryTemplate.mako)

Ich habe versucht, es vor vererben Hinzufügen

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

, aber es funktioniert nicht.

Irgendwelche Tipps?

Vielen Dank für Ihre Unterstützung

War es hilfreich?

Lösung

Sie sollten nicht in der Vorlage mit "c" werden.

<% includeJquery = True %>

und

% if includeJquery:
...
% endif

sollte ausreichen.

Ich glaube, Sie diese falsch machen ... In Ihrer Basis-Vorlage Sie eine leere def für einen jquery Block machen sollte und es nennen. Dann in der vererbten Vorlage nur den Block neu definieren.

base.mako:

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

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

Dann in einer anderen Vorlage fügen Sie jquery mit:

<%inherit file="base.mako />

<%def name="jquery()">
<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
</%def>

Andere Tipps

Nun, da mit der Zeile

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

Ich brauche auch einige andere js hinzuzufügen habe ich ein jQueryScript% def in Kind Vorlage

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

dann in Basis ich überprüfen, falls vorhanden, und fügen Sie alle entsprechend

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

so ich Satz nichts in der Steuerung nicht brauchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top