Как прикрутить TinyMCE к Django admin, без сторонних виджетов и использовать его только в нужных полях ввода?
Оказывается не сложно. И не нужны для этого всякие django-tinymce.
Достаточно правильно установить и настроить сам WYSIWYG редактор, а за тем правильно оформить виджеты админки на требуемые поля ввода.
Настраиваем TinyMce в нашем базовом шаблоне админки
<!-- TinyMCE -->
<script type="text/javascript" src="/static/js/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
language : 'ru',
mode : "specific_textareas",
editor_selector : "mceEditor", //На какой css класс будет TinyMCE отображаться
theme : "advanced",
plugins : "style,paste,advhr,advimage,advlink",
// Theme options
theme_advanced_buttons1 :"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,
justifyright,justifyfull,styleprops,formatselect,fontselect,fontsizeselect,|,
justifyright,justifyfull,styleprops,formatselect,fontselect,fontsizeselect,|,
forecolor,backcolor,|,charmap,advhr",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,
bullist,numlist,|,outdent,indent,blockquote,|,
undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,
hr,removeformat,visualaid,|,sub,sup"
bullist,numlist,|,outdent,indent,blockquote,|,
undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,
hr,removeformat,visualaid,|,sub,sup",
theme_advanced_buttons3 : "", //Делаем две строки кнопок в шапке редактора
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
});
</script>
<!-- End TinyMCE -->
Настраиваем наш models.py
class /# класс модели #/(models.Model):
...
class /# класс модели #/Admin(admin.ModelAdmin):
...
formfield_overrides = {
models.TextField: {'widget': forms.Textarea(attrs={'class':'mceEditor'})},
}
admin.site.register(/# класс модели #/, /# класс модели #/Admin)
После этих манипуляций TinyMce работает там где мне надо и не портит мне нервы. :o)
Комментарии
19 июня 2014 г. 15:12
Гость
Наверно круто, только абсолютно безполезно когда не знаешь что такое "в нашем базовом шаблоне админки" где надо положить TinyMCE чтоб сработал "/static/js/tiny_mce/tiny_mce.js", и почему в архиве что я скачал с tinymce.com нет директорий "tiny_mce", только "tinymce", как и нбет файла "tiny_mce.js" только "tinymce.min.js"
10 апреля 2013 г. 11:49
Игорь
сам редактор не отображается, хотя класс mceEditor приклеился
2 марта 2013 г. 13:34
owlman
Нет. не сталкивался.
2 марта 2013 г. 12:29
Гость
Вы, случайно не сталкивались с привязкой django-filebrowser-no-grappelli к Tiny? У меня чего-то не получается. Иконка не появляется, ошибок не выдает никаих.
1 марта 2013 г. 22:51
owlman
У меня такого не случается.
Может в моделях чего не так?
Может в моделях чего не так?
1 марта 2013 г. 21:49
Гость
А нет, base.html.
Всё заработало, один только момент, после добавления в модель строки formfield_overrides = {models.TextField: {'widget': forms.Textarea(attrs={'class':'mceEditor'})},} текстовое поле становится в несколько раз меньше (даже если не загрузился js). Как это пофиксить? Еще раз спасибо!
Всё заработало, один только момент, после добавления в модель строки formfield_overrides = {models.TextField: {'widget': forms.Textarea(attrs={'class':'mceEditor'})},} текстовое поле становится в несколько раз меньше (даже если не загрузился js). Как это пофиксить? Еще раз спасибо!
1 марта 2013 г. 20:56
Гость
Спасибо за статью!
А базовый шаблон админки - это base_site.html?
А базовый шаблон админки - это base_site.html?
Пост написан для Джанговодов, а они обычно смотрят документацию по джанге. Ведь там все есть.