2013-09-03 1 views
1

J'ai une variable myvariable que je veux utiliser dans un template Mako. Je veux être en mesure de vérifier en quelque sorte son type avant de faire quoi que ce soit avec. Quelle est la syntaxe pour vérifier ce genre d'information? Je sais que python a typeof et instanceof, mais y a-t-il un équivalent dans Mako ou comment le feriez-vous?Comment vérifier instanceof dans le modèle mako?

pseudocode ci-dessous:

% if myvariable == 'list': 
// Iterate Throuh the List 
    %for item in myvariable: 
     ${myvariable[item]} 
    %endfor 
%elif variabletype == 'int': 
// ${myvariable} 

%elif myvariable == 'dict': 
// Do something here 

Répondre

2

Vous pouvez utiliser isinstance():

>>> from mako.template import Template 
>>> print Template("${isinstance(a, int)}").render(a=1) 
True 
>>> print Template("${isinstance(a, list)}").render(a=[1,2,3,4]) 
True 

UPD. Voici l'utilisation à l'intérieur de if/else/endif:

from mako.template import Template 
t = Template(""" 
% if isinstance(a, int): 
    I'm an int 
% else: 
    I'm a list 
% endif 
""") 


print t.render(a=1) # prints "I'm an int" 
print t.render(a=[1,2,3,4]) # prints "I'm a list" 
Questions connexes