2009-11-16 8 views
3

J'utilise la fonction intégrée « somme » dans un modèle de templator de web.py et je reçois l'erreur suivante:erreur de modèle Web.py: « somme » n'existe pas

global name 'sum' is not defined 

Le code source est ci-dessous:

$if profs: 
    $for prof in profs: 
     $sum([1, 2, 3]) 

Je peux utiliser 'sum' très bien sur un Python REPL dans le terminal.

Quel pourrait être le problème?

Merci, Jacob

Répondre

4

Ajouter les fonctions dans un dict et passer comme argument globals pour rendre:

render = web.template.render('templates/', globals={'sum': sum}) 

Ensuite, dans votre modèle, vous pouvez simplement l'utiliser:

$def with (numbers) 

<h1>Numbers add to $sum(numbers)</h1> 
0

Pas tout le code python est disponible en notation modèle, essayez quelque chose comme ceci:

$if profs: 
    $for prof in profs: 
     $code: 
     mysum = sum([1, 2, 3]) 
     $mysum 
+0

Non, l'erreur persiste. Je veux juste résumer une liste, je dirais que cela ferait partie du sous-ensemble Python qu'ils autoriseraient dans les modèles, mais peut-être que je me trompe. –

+2

Les langages de modèles ne permettent généralement pas l'instanciation directe des appels de fonction. Vous devrez peut-être faire quelque chose pour assigner la valeur 'sum' à l'avance, par exemple à l'aide d'un attribut ou d'une méthode. – jathanism