2008-12-01 3 views

ответ

22

Существует add-on Django application, чтобы обеспечить поддержку Django-админ-форм без необходимости гадать с шаблонами администратора или внутренними элементами Django newform.

13

Взгляните на это snippet. Основная идея состоит в том, чтобы включить пользовательские JS в определения администратора, которые заменят стандартные текстовые области богатым текстовым редактором.

Для JQuery/Fckeditor таких JS может выглядеть так:

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

Интересно. Благодарю. TinyMCE был сукой с IE, поэтому пришлось заменить его на FCKEditor на admin Django. – ayaz

10

Я бы сказал: определить свой собственный класс ModelAdmin и перезаписывать виджет, используемый для конкретной области, как:

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

    class Meta: 
     model = models.Article 

(AdminWYMEditor - это подкласс forms.Textarea, который добавляет WYMEditor с конфигурацией, специфичной для приложения администратора Django).

См. this blog post by Jannis Leidel, чтобы увидеть, как этот виджет может быть реализован.

2

В настоящее время самым прямым способом использования tinymce в администраторе django является использование Grappelli.

http://code.google.com/p/django-grappelli/

Grappelli также является требованием для django-filebrowser, так что если вы хотите, чтобы весь притон вам должен это нужно в любом случае.

+0

давайте подождем v3 (может быть, отдельно от grappelli) .. Между тем я получил пакет, работающий с http://code.google.com/p/django-filebrowser/source/browse/branches/filebrowser3-no-grappelli/ и django-tinymce-1.5.tar.gz (последняя версия на данный момент) с этим взломом http://code.google.com/p/django-tinymce/issues/detail?id=40 eh. –

2

Хорошо, чтобы немного обновить этот пост, я бы сказал, что самый простой способ реализовать TinyMCE - использовать приложение django-tinymce. Вы также должны загрузить JS-файлы с TinyMCE page. Я получил некоторые ошибки с инданационализацией django, но загрузка пакетов laguage из TinyMCE должна быть достаточной.

1
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) 
5

На дату публикации и ответов TinyMCE был довольно популярен (как это, вероятно, и сегодня). Но после того, как некоторое время CKEditor появился и многие считают, что лучшей альтернативы, в том числе многих SO пользователей:

Compare TinyMCE and CKeditor for a Wiki

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

Существует также 2013 обзор WISIWYG редакторов с Джанго в России:

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