En effet l'include n'est pas mal ni inadapté pour une menu. Néanmoins 
la manière standard en django de le faire est (sauf cas spécifique 
dynamique très particulier):

- Un fichier base.html qui contient:

header

{% block menu %}
html du menu par default sur toute les pages
{% endblock %}

footer

- un fichier bidule.html qui fait:

extends base.html

code html normal

- et dans le cas d'un fichidr qui a besoin d'un menu particulier:

truc.html:

extends base.html

{% block menu %}
code du menu particulier qui override le précédent
{% endblock %}

reste du code html normal

Normalement ceci couvre 99% des cas de menus.

Le sam. 14 juil. 2012 18:48:04 CEST, Christophe Narbonne a écrit :
> Kevin propose une réponse juste et pertinante, néanmoins, dans ton cas
> de menu,
> l'include ne me parait ni mal ni innadapté.
>
> Pour ma part, il m'arrive de l'utiliser pour le rendering de ligne de
> tableaux complexe ou il m'arrive de rafraichir en ajax des lignes
> individuelles.
>
> Donc, à ta place ton application d'aiguillage, ton menu, si tu le veux
> générique et réutilisabe doit avoir pour paramettre une liste
> d'applications ou de templates à inclures, je dirais d'application.
>
> Tu peux imposer la contrainte d'avoir un template
> {{nom_de_l'app}}/menu_part.html qui n'hériterai pas de base.html.
>
> Comme include attends un string, tu peux facilement itérer sur la
> liste des apps et inclure ça.
>
> Si c'est ce que tu veux faire, le plus compliqué maintenant c'est
> d'avoir un bon rendu avec un nombre d'application dans le menu
> dynamique, bonne chance.
>
>
> 2012/7/14 Kevin Samuel <[email protected]
> <mailto:[email protected]>>
>
>     Bonjour,
>
>     Il va être dur de vous aider sans avoir le détail de tout le code.
>
>     Dans tous les cas:
>
>     - "include" est rarement la solution. La plupart des structures de
>     template en Django utilisent "extends". "include" prend un template,
>     fais un render dessus, et l'insère là où il y a le tag alors que
>     "extends" fait un render sur le template courrant, et l'enrobe dans le
>     template qu'il étend.
>     - je suis 100% pour structurer son projet en plein de sous apps, mais
>     il ne faut pas tomber dans l'abus. Je n'ai pas la main sur le code
>     donc
>     je ne peux pas juger, mais est-il indispensable d'avoir deux apps
>     ici ?
>
>
>
>     Le sam. 14 juil. 2012 15:23:25 CEST, thomfort a écrit :
>     > Bonjour,
>     >
>     > Je suis relativement nouveau dans le monde de Django. Je
>     l'utilise pour un
>     > projet personnel et je bloque à un endroit.
>     >
>     > Pour le moment j'ai 2 apps. La principale contient un template
>     dashboard
>     > qui affichera les informations des autres apps. J'ai structuré
>     ma 2e apps
>     > pour qu'elle aille ses propres templates pour que je puisse insérer
>     > ensuite dans le dashboard de la 1ere apps. Voilà, je suis
>     incapable de
>     > faire cette dernière étape. J'imaginais utiliser {% include %}, mais
>     > l'objet ne suit pas. Ensuite, je me suis dit que j'utiliserais
>     la view de
>     > ma 1ere apps pour faire mes requêtes, mais sa m'énerve au plus
>     profond de
>     > mettre ça à la mauvaise place.
>     >
>     > Auriez-vous une façons dont je pourrais structuré ça?
>     >
>     > Cordialement,
>     > _______________________________________________
>     > django mailing list
>     > [email protected] <mailto:[email protected]>
>     > http://lists.afpy.org/mailman/listinfo/django
>
>
>     _______________________________________________
>     django mailing list
>     [email protected] <mailto:[email protected]>
>     http://lists.afpy.org/mailman/listinfo/django
>
>
>
>
> --
> Best regards,
> Christophe Narbonne
>
> http://blogs.dotnet-france.com/christophen/
>
>
> _______________________________________________
> django mailing list
> [email protected]
> http://lists.afpy.org/mailman/listinfo/django


_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à