2012-07-06 3 views
1

J'ai un modèle pour rendre mais car il a des balises aussi, il devient difficile d'accès particulier code strings.The va comme ceci:Comment formater une telle chaîne?

template=""" 
    <select> 
    <option {% if record.views = '%s' %} selected {% endif %}>'%s' 
    </select> 
    """%(pop, pop) 

Ici, je veux la valeur de la pop, mais il donne une erreur:

Caught TypeError while rendering: not enough arguments for format string 

Toute solution comment puis-je accéder à ce format de chaîne. Merci

+2

I * pense * votre problème principal est que vous Templating votre modèle .... un peu peu orthodoxe. Avez-vous une chance de le faire d'une autre manière ou utilisez-vous la langue du modèle pour faire ce que vous essayez? – Crisfole

+0

Pour référence: https://docs.djangoproject.com/fr/dev/topics/templates/ – Crisfole

Répondre

3

Vous devez les signes%:

template=""" 
    <select> 
    <option {%% if record.views = '%s' %%} selected {%% endif %%}>'%s' 
    </select> 
    """%(pop, pop) 

rendements

<select> 
<option {% if record.views = '1' %} selected {% endif %}>'1' 
</select> 

pour la pop = '1'

0

Vous devriez juste doubler le "%" pour leur échapper

template=""" 
    <select> 
    <option {%% if record.views = '%s' %%} selected {%% endif %%}>'%s' 
    </select> 
    """%(pop, pop) 
+0

Merci qui a vraiment travaillé !! – Karan

0

Vous obtenez l'erreur car Python cherche à remplir les quatre symboles %. Vous devez leur échapper, en ajoutant un autre % devant eux, comme ceci:

template=""" 
    <select> 
    <option {%% if record.views = '%s' %%} selected {%% endif %%}>'%s' 
    </select> 
    """%(pop, pop) 
4

Sérieusement, ne pas essayer de prétraiter le langage de template. C'est un langage de template! Il s'occupe de ce genre de chose!

Envoyer selected_type dans le contexte du modèle, et à faire:

<option {% if record.views = selected_type %} selected {% endif %}>'{{ selected_type }}' 
+0

Salut, Pouvez-vous s'il vous plaît élaborer la solution? – Karan

Questions connexes