46 votes

Remplacer le textarea par un éditeur de texte riche dans Django Admin ?

J'aimerais connaître la meilleure façon de remplacer un champ textarea standard par un éditeur de texte riche dans Django Admin ?

28voto

Niten Points 878

Il y a un application Django complémentaire pour fournir TinyMCE prise en charge des formulaires d'administration de Django sans avoir à s'embrouiller avec les modèles d'administration ou les internes des nouveaux formulaires de Django.

13voto

vvarp Points 351

Jetez un coup d'œil à ceci extrait - L'idée de base est d'inclure un JS personnalisé dans vos définitions d'administration qui remplacera les zones de texte standard par un éditeur de texte riche.

Pour jQuery/FCKEditor, un tel JS pourrait ressembler à ceci :

$(document).ready(function() {
    $("textarea").each(function(n, obj) {
        fck = new FCKeditor(obj.id) ;
            fck.BasePath = "/admin-media/fckeditor/" ;
            fck.ReplaceTextarea() ;
    });
});

12voto

zgoda Points 8549

Je dirais : définissez votre propre classe ModelAdmin et écrasez le widget utilisé pour un champ particulier, par exemple :

class ArticleAdminModelForm(forms.ModelForm):
    description = forms.CharField(widget=widgets.AdminWYMEditor)

    class Meta:
        model = models.Article

(AdminWYMEditor est un forms.Textarea qui ajoute le WYMEditor avec une configuration spécifique à l'application d'administration de Django).

Ver ce blog post par Jannis Leidel pour voir comment ce widget peut être mis en œuvre.

8voto

A la date du post et des réponses, TinyMCE était assez populaire (comme il l'est probablement encore aujourd'hui). Mais après un certain temps, ckeditor est apparu et beaucoup le considèrent comme une meilleure alternative, y compris de nombreux utilisateurs de SO :

Comparer TinyMCE et CKeditor pour un Wiki

http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor

Il y a aussi une revue de 2013 des éditeurs de WISIWYG avec Django en russe :

http://habrahabr.ru/company/htdt/blog/202782/

2voto

FernandoEscher Points 803

Ok, pour mettre à jour un peu ce post, je dirais que la manière la plus simple d'implémenter TinyMCE est d'utiliser la fonction django-tinymce app. Vous devez également télécharger les fichiers JS à partir de la page Page TinyMCE . J'ai eu quelques erreurs avec l'internationalisation de django, mais télécharger les packs de langues depuis le TinyMCE doit être suffisant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X