Django admin + TinyMCE без сторонних виджетов

4994 8

Как прикрутить 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:49 owlman
Согласен на все 100%: Бесполезно когда не знаешь "В нашем базовом шаблоне админки"
Пост написан для Джанговодов, а они обычно смотрят документацию по джанге. Ведь там все есть.
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). Как это пофиксить? Еще раз спасибо!
1 марта 2013 г. 20:56 Гость
Спасибо за статью!
А базовый шаблон админки - это base_site.html?

Контактные данные

 Россия, г. Москва