Vous n'êtes pas identifié(e).
Bonjour à tous,
Débutant dans la programmation sous django, je me suis fixé comme objectif de migrer mon site actuellement sous CMS vers django, pour plus de souplesse, de contrôles, etc...
Je dois donc rapatrier des articles qui avaient un formatage particulier, me permettant d'insérer directement des éléments extérieurs via des balises personalisées, comme par exemple :
- $formule$ pour une formule latex,
- $$formule$$ pour une formule latex centrée,
- {app}...{/app} pour insérer un applet avec une figure dynamique,
- {asy}...{/asy} pour insérer une figure asymptote,
- {c}...{/c} pour une coloration syntaxique de code source,
- etc...
Au début, j'ai créé des filtres pour chacune de ses balises, qui en gros, récupèrent le contenu à l'aide des expressions régulières, pour le remplacer dans l'affichage de la page. Jusque là, pas trop de soucis.
Ce qui me gêne, c'est dans le template des articles, je me retrouve avec quelque chose de la forme :
{{ article|latex|code|applet|latexc|asymptote|...|... }}
et j'ai vraiment l'impression qu'on peut faire mieux, sauf que je n'ai pas assez de recul sur django pour savoir comment exactement.
Peut-être qu'il est possible de créer un filtre appelant tour à tour tous les autres, je n'en sais rien.
Et surtout, je ne sais pas si tout cela est réellement optimisé.
Avis au connaisseurs, toute indication sera la bienvenue, merci d'avance
Hors ligne
Bonjour,
Pourquoi ne pas tout regrouper sous un seul filtre qui programmatiquement appelle chacun de tes filtres ? puisque cela à l'air d'être ce que tu cherches à faire ?
Cordialement,
Xavier Ordoquy,
Linovia.
Le 16 juin 2012 à 15:31, Arnaud a écrit :
> Bonjour à tous,
>
> Débutant dans la programmation sous django, je me suis fixé comme
> objectif de migrer mon site actuellement sous CMS vers django, pour plus de
> souplesse, de contrôles, etc...
>
> Je dois donc rapatrier des articles qui avaient un formatage particulier,
> me permettant d'insérer directement des éléments extérieurs via des
> balises personalisées, comme par exemple :
>
> - $formule$ pour une formule latex,
> - $$formule$$ pour une formule latex centrée,
> - {app}...{/app} pour insérer un applet avec une figure dynamique,
> - {asy}...{/asy} pour insérer une figure asymptote,
> - {c}...{/c} pour une coloration syntaxique de code source,
> - etc...
>
> Au début, j'ai créé des filtres pour chacune de ses balises, qui en
> gros, récupèrent le contenu à l'aide des expressions régulières, pour
> le remplacer dans l'affichage de la page. Jusque là, pas trop de soucis.
>
> Ce qui me gêne, c'est dans le template des articles, je me retrouve avec
> quelque chose de la forme :
>
>
{{ article|latex|code|applet|latexc|asymptote|...|... }}
>
> et j'ai vraiment l'impression qu'on peut faire mieux, sauf que je n'ai pas
> assez de recul sur django pour savoir comment exactement.
> Peut-être qu'il est possible de créer un filtre appelant tour à tour
> tous les autres, je n'en sais rien.
> Et surtout, je ne sais pas si tout cela est réellement optimisé.
>
> Avis au connaisseurs, toute indication sera la bienvenue, merci d'avance
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
Salut arnaud,
Il semble que tes contenus étaient rédigés avec une certaine syntaxe de mise
en forme (genre bbedit, markup, une syntaxe wiki, etc..), quelle est elle ?
Souvent les modules des parser/render de syntaxe de mise en forme sont assez
bien fait pour être étendu directement en Python pour ajouter des macros,
étendre leur format, etc..
À mon avis c'est ce chemin vers lequel tu devrais t'orienter.
Et si jamais tu n'utilisais pas de syntaxe particulière, alors c'est le moment
d'y passer et sera encore plus simple, je te conseillerais d'ailleurs quelque
chose comme du ReStructuredText.
Sinon en derniers recours comme l'a mentionné xavier, tu devrais te faire un
"templatetags" qui recoit ton article en premier argument et qui consommera le
contenu pour le transformer et appliquer tes "plugins" de syntaxe
supplémentaires. Tu peux même utiliser des arguments supplémentaires avec ton
templatetag pour activer/désactiver les plugins dont tu n'a pas besoin.
Hors ligne
Bonsoir et merci pour vos réponses.
Les articles étaient rédigés via un éditeur javascript usuel, qui fait quelque chose qui ressemble à du wysiwyg : http://www.queness.com/post/10363/10-fe … xt-editors
La syntaxe n'est donc pas particulière comme sur un wiki, ou du type markup, les articles sont enregistrés sous forme de html dans la bdd.
@David : je ne suis pas sûr d'avoir compris ta remarque sur les parser/render : il me semblait justement que l'équivalent de ces derniers sous django étaient les filtres, me suis-je trompé ?
Ou alors es-tu en train de me dire qu'il me suffit de compléter les éditeurs javascript dont je fais mention plus haut ?
Hors ligne
> @David : je ne suis pas sûr d'avoir compris ta remarque sur les
> parser/render : il me semblait justement que l'équivalent de ces derniers
> sous django étaient les filtres, me suis-je trompé ?
Non je parlais des parsers générant des rendus pour les syntaxes wiki, ce sont
en général des modules hors de Django que tu appliques avec un filtre ou
templatetag (par exemple
https://docs.djangoproject.com/en/dev/ref/contrib/markup/), enfin bref ça ne
s'applique pas à toi qui gère directement du HTML.
Donc mon conseil pour ton désire de faire un peu plus simple et "propre" c'est
de te faire un templatetag qui accepte en premier argument le contenu (ton
html) auquel appliquer tes "macros" supplémentaires. On peut même imaginer un
second argument optionnel pour spécifier une liste des noms de tes macros à
utiliser.
Et ton templatetag se débrouile tout seul. Je crois qu'un "simple tags" doit
te suffire : https://docs.djangoproject.com/en/dev/howto/custom-template-
tags/#simple-tags
Hors ligne
Ok, merci du lien, je vais étudier cela
Hors ligne