用Django Admin中的富文本编辑器replacetextarea?
我想知道在Django Admin中用富文本编辑器replace标准textarea字段的最佳方法吗?
有一个附加的Django应用程序可以为Django的pipe理表单提供TinyMCE支持,而不必pipe理pipe理模板或Django的newform内部。
看看这个代码片段 – 基本的想法是将自定义JS包含在您的pipe理定义中,它将用富文本编辑器replace标准文本区域。
对于jQuery / FCKEditor这样的JS可能看起来像这样:
$(document).ready(function() { $("textarea").each(function(n, obj) { fck = new FCKeditor(obj.id) ; fck.BasePath = "/admin-media/fckeditor/" ; fck.ReplaceTextarea() ; }); });
我会说:定义你自己的ModelAdmin类,并覆盖用于特定领域的小部件,如:
class ArticleAdminModelForm(forms.ModelForm): description = forms.CharField(widget=widgets.AdminWYMEditor) class Meta: model = models.Article
(AdminWYMEditor是一个forms.Textarea
子类,它为forms.Textarea
添加了特定于Django admin app的configuration)。
请参阅Jannis Leidel的博客文章,了解如何实现这个小部件。
在发布date和答案TinyMCE是相当stream行的(因为它可能仍然是今天)。 但是过了一段时间ckeditor出现了,许多人认为这是一个更好的select,包括许多SO用户:
比较TinyMCE和CKeditor的Wiki
http://www.turnkeylinux.org/blog/tinymce-vs-ckeditor
还有一个2013年与Django的WISIWYG编辑在俄罗斯的审查:
目前在djangopipe理中使用tinymce最直接的方法是使用Grappelli。
http://code.google.com/p/django-grappelli/
Grappelli也是django-filebrowser的一个要求,所以如果你想要整个shebang,你将需要它反正。
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)
好的,为了更新一下这篇文章,我会说实现TinyMCE最简单的方法就是使用django-tinymce应用程序。 您还必须从TinyMCE页面下载JS文件。 我在django的国际化过程中遇到了一些错误,但是从TinyMCE下载语言包就足够了。