Django Tag personnalisé+retourner du code html
Bonjour tout le monde.
J'ai récemment voulu créer mon propore tag pour mes templates, et je souhaitais que ce tag retourne du code HTML. Mais j'ai rencontré un probleme: Mon Tag retourne bien du code HTML et fonctionne correctement. Et le code que je retourne etait censé créer un ou deux liens vers d'autres pages de mon site. Mais les liens provenant du code que retourne ne fonctionnent pas. Au lieu d'avoir une URL avec quelque chose du genre CTAproposal/new_proposal ou CTAproposal/my_proposal (comme quand les liens sont directement coder dans mon template) je me retrouve avec une URL un peu comme celle ci /CTAproposal/%7B%.
Du coup Django ne retrouve pas cette URL dans mes urls.py et mon site plante lamentablement :aie:
Voici le code de mon tag:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
@register.tag
def onglet_html_tag(parser, token):
try:
nom_tag = token.split_contents()
except ValueError:
msg = 'The tag %s have a error' % token.split_contents()[0]
raise template.TemplateSyntaxError(msg)
return onglet_html_node()
class onglet_html_node(template.Node):
def render(self, context):
opt1 = "<li><a href={% url 'proposal:newProposal' %}>New Proposal</a></li>\n<li><a href={% url \
'proposal:proposalStatus' %}>My Proposals</a></li>"
opt2 = "<li><a href={% url 'proposal:proposalStatus' %}>My Proposals</a></li>"
today = datetime.now()
if today < settings.END_CALL and today > settings.START_CALL:
return opt1
else:
return opt2 |
Et le partie de code de mon template concernée:
Code:
1 2 3 4 5 6 7 8
|
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"
role="button" aria-expanded="false">Proposal<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
{% onglet_html_tag %}
</ul>
</li><!-- dropdown Proposal --> |
Si quelqu'un peut m'expliquer pourquoi le code HTML que retourne mon tag ne marche pas, cela m'intéresse. Merci d'avance :)