Utiliser la fonction de rendu comme pseudo balise html dans mako

Utiliser la fonction de rendu comme pseudo balise html dans mako

Dans mako, vous pouvez utiliser la fonction de rendu définie comme une pseudo balise html. (Utilisez Exemple de liste déroulante Bootstrap) Plus précisément, le code suivant est rendu en html.

<!-- drop down widget -->
<%namespace file="./widget.html" name="w"/>

<%w:dropdown name="DropDown" id="dropdownMenu1">
  <%w:menu id="first" href="#">Action</%w:menu>
  <%w:menu href="#">Another Action</%w:menu>
  <%w:menu href="#">Something else here</%w:menu>
  <li role="presentation" class="divider"></li>
  <%w:menu href="#">Separated link</%w:menu>
</%w:dropdown>

Ce code devient html comme ci-dessous (supprimez les lignes vides).

<div class="dropdown">
  <button class="btn dropdown-toggle" type="button" id=dropdownMenu1 data-toggle="dropdown">
    DropDown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
    <li role="presentation"><a id=first role="menuitem" tabindex="-1" href="#">Action</a></li>
    <li role="presentation"><a  role="menuitem" tabindex="-1" href="#">Another Action</a></li>
    <li role="presentation"><a  role="menuitem" tabindex="-1" href="#">Something else here</a></li>
    <li role="presentation" class="divider"></li>
    <li role="presentation"><a  role="menuitem" tabindex="-1" href="#">Separated link</a></li>
  </ul>
</div>

Détails ci-dessous

Dans mako, il existe deux façons d'appeler la fonction de rendu.

Lorsque le formulaire de fonction de rendu suivant est défini.

## helpers.html
<%def form="(action, method)">
<div class="form">
<form action="${action}" method="${method}">
</form>
</div>
</%def>

Il y a deux façons de l'appeler. Le premier est appelé au format $ {foo} de la même manière que l'expansion de variables.

<%namespace file="./helpers.html" name="h"/>
## form
${h.form(action="#", method="POST")}

Vous pouvez également écrire comme suit. Ceci est la deuxième forme.

<%namespace file="./helpers.html" name="h"/>
## form
<%h:form action="#" method="POST"></%h:form>

Il peut être appelé dans un format de type tag.

Caller.body () permet à l'appelant d'incorporer une valeur en interne

L'avantage de pouvoir l'appeler dans un format semblable à une balise est que vous pouvez incorporer une valeur dans le bloc de code.

##Il peut s'écrire comme suit.
<%h:form action="#" method="POST">
  <div class="field has-feedback">
    <label>name:<input type="text" name="name"/></label>
  </div>
</%h:form>

Ensuite, vous pouvez faire en sorte que la partie extérieure soit enveloppée en premier et décider de l'élément intérieur au moment de l'appel. Utilisez caller.body () pour ce faire. Si vous modifiez le code comme ci-dessous, l'exemple ci-dessus fonctionnera.

<%def form="(action, method)">
<div class="form">
<form action="${action}" method="${method}">
${caller.body()}
</form>
</div>
</%def>

Code complet pour exécuter le premier exemple

gist

référence

Recommended Posts

Utiliser la fonction de rendu comme pseudo balise html dans mako
Comment utiliser la fonction de rendu définie dans .mako (.html) directement dans mako
Utiliser la fonction de rappel en Python
Utilisez le tissu tel quel en python (fabric3)
Utiliser python dans le conteneur Docker comme interpréteur Pycharm