2012-03-30 1 views
0

J'ai un formulaire mako qui inclut une variable à transmettre en tant que valeur pour une balise masquée. D'une certaine façon, la variable n'est pas transmise correctement. Ce code a fonctionné avant, mais maintenant le HTML généré ne rend pas la valeur correctement.La variable Mako n'est pas passée correctement à la forme pyramidale

Code Mako:

<b>Create model at path</b>: ${ppath} 
<%def name="direct_load_model_form(method, ppath)"> 
${h.tags.form(method, multipart=True, method='post', hidden_fields=[('ppath', ppath)])} 
<b>Node Name: </b>${h.tags.text('node_name')}<BR> 
<b>Parameters: </b>${h.tags.file('params_file', size=100)}<BR> 
${h.tags.submit('submit', 'Create')} 
${h.tags.end_form()} 
</%def> 

${self.direct_load_model_form(process_route, ppath)} 

La fonction hidden_fields est de la bibliothèque helpers Web. Dans mes vues, j'essaie d'utiliser ppath comme ppath = self.request.POST['ppath'].

La variable ppath s'affiche correctement dans la première ligne, mais pas lorsqu'elle est transmise comme valeur à un champ masqué. Ai-je besoin d'y échapper une autre fois ou quelque chose?

Ceci est le code html rendu:

<input type="hidden" value="" name="ppath"> 
+0

Je ne pense pas que le problème soit avec Mako ici. C'est probablement la façon dont vous utilisez votre bibliothèque de formulaires, que vous ne spécifiez pas dans votre question. Pour vous aider à déboguer, vous pouvez essayer '$ {ppath}' dans votre def quelque part. De plus, vous pouvez écrire directement votre entrée cachée: ''. –

+0

J'ai mis à jour ma question. Je suis à peu près sûr que le code du template a fonctionné avant. Je pense que je peux écrire l'entrée cachée directement, mais hidden_fields est une méthode très pratique quand j'ai plus d'une valeur. J'écrirais probablement ma propre méthode. – sutee

+0

Pouvez-vous mettre en place une version simplifiée de votre code d'affichage afin que nous puissions voir comment vous passez réellement ppath au modèle et mentionnez quelle version d'assistants web vous utilisez? – BenTrofatter

Répondre

1

Voici quelque chose que vous pouvez essayer, au lieu d'utiliser ppath partout, vous pouvez renommer ppath dans votre fonction def chemin.

<b>Create model at path</b>: ${ppath} 

<%def name="direct_load_model_form(method, path)"> 
    ${h.tags.form(method, multipart=True, method='post', hidden_fields=[('ppath', path)])} 
    <b>Node Name: </b>${h.tags.text('node_name')}<BR> 
    <b>Parameters: </b>${h.tags.file('params_file', size=100)}<BR> 
    ${h.tags.submit('submit', 'Create')} 
    ${h.tags.end_form()} 
</%def> 

${self.direct_load_model_form(process_route, ppath)} 

Il est peut-être un problème, mais depuis mako crée un code python, il est possible que quelque part, le paramètre envoyé à votre fonction est surchargée. Cela dit, on ne sait pas quelle variable il utilisera puisque les defs peuvent accéder aux variables globales mais vous réinitialisez en appelant le def.

Questions connexes