Bedingung mako Basisvorlage von vererben einer
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
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.