python - source - ¿Reemplazar textarea con el editor de texto enriquecido en Django Admin?
wysiwyg editor free (7)
Me gustaría saber la mejor manera de reemplazar un campo de texto estándar con un editor de texto enriquecido en Django Admin?
Hay una aplicación complementaria de Django para proporcionar compatibilidad con TinyMCE para los formularios de administración de Django sin tener que perder el tiempo con las plantillas de administración o las nuevas piezas internas de Django.
Eche un vistazo a este fragmento : la idea básica es incluir JS personalizado en las definiciones de administrador que reemplazarán las áreas de texto estándar con el editor de texto enriquecido.
Para jQuery / FCKEditor, tal JS podría verse así:
$(document).ready(function() {
$("textarea").each(function(n, obj) {
fck = new FCKeditor(obj.id) ;
fck.BasePath = "/admin-media/fckeditor/" ;
fck.ReplaceTextarea() ;
});
});
Actualmente, la forma más directa de utilizar tinymce en django admin es usar Grappelli.
http://code.google.com/p/django-grappelli/
Grappelli también es un requisito para django-filebrowser así que si quieres todo el shebang lo necesitarás de todos modos.
Yo diría: defina su propia clase ModelAdmin y sobrescriba el widget utilizado para un campo particular, como:
class ArticleAdminModelForm(forms.ModelForm):
description = forms.CharField(widget=widgets.AdminWYMEditor)
class Meta:
model = models.Article
(AdminWYMEditor es una subclase forms.Textarea
que agrega WYMEditor con configuración específica para la aplicación de administración Django).
Vea esta publicación del blog de Jannis Leidel para ver cómo se puede implementar este widget.
class KindEditor(forms.Textarea):
class Media:
css ={
''all'':(settings.STATIC_ROOT + ''editor/themes/default/default.css'',)
}
js = (settings.STATIC_ROOT + ''editor/kindeditor-min.js'',settings.STATIC_ROOT + ''editor/lang/zh_CN.js'',)
def __init__(self):
attrs = {}
attrs[''rel''] = ''kind''
super(KindEditor, self).__init__(attrs)
class NewsAdminForm(forms.ModelForm):
pass
class Meta:
model = News
widgets = {
''body'':KindEditor()
}
class NewsAdmin(admin.ModelAdmin):
form = NewsAdminForm
admin.site.register(News, NewsAdmin)
Ok, para actualizar un poco esta publicación, diría que la forma más fácil de implementar TinyMCE es usar la aplicación django-tinymce . También debe descargar los archivos JS de la página TinyMCE . Recibí algunos errores con la integración de django, pero descargar los paquetes de idioma de TinyMCE debe ser suficiente.
En la fecha de la publicación y las respuestas, TinyMCE fue bastante popular (como probablemente lo siga siendo hoy). Pero después de algún tiempo, apareció ckeditor y muchos consideran que es una mejor alternativa, incluidos muchos usuarios de SO:
Compara TinyMCE y CKeditor para una Wiki
http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor
También hay una revisión de 2013 de los editores de WISIWYG con Django en ruso: