Интеграция TinyMCE в django

В отличие от большинства статей, я не пытаюсь интегрировать tinyMCE в страницу администратора.

Я создаю сайт с несколькими блогами и хочу интегрировать tinyMCE в текстовую область, где пользователь должен ввести свою статью. Вышеупомянутая текстовая область отсутствует в консоли администратора.

Я прочитал документы и выполнил шаги построчно. Единственное изменение, которое я сделал, это то, что вместо MEDIA_ROOT я использовал STATIC_ROOT.

My Setting.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tinymce',
    'pages',
    'blog',
    'django_summernote',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

TEMPLATE_CONTEXT_PROCESSORS = {
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.request',

}

STATIC_ROOT = 'F:/Projects/trebuchet/site/blog_test/'

STATIC_URL = '/static/'

############ TINY MCE ################

TINYMCE_JS_URL = os.path.join(STATIC_ROOT, "static/tiny_mce/tiny_mce.js")

TINYMCE_JS_ROOT = os.path.join(STATIC_ROOT, "static/tiny_mce")

TINYMCE_JS_URL = os.path.join(STATIC_ROOT,'static/tiny_mce/tiny_mce_src.js')
TINYMCE_DEFAULT_CONFIG = {
    "relative_urls": "false",
    "theme": "advanced",
    "theme_advanced_buttons1":     "formatselect,bold,italic,underline,link,unlink,bullist,undo,code,image",
    "theme_advanced_buttons2": "",
    "theme_advanced_buttons3": "",
    "plugins": "paste",
    "height": "550px",
    "width": "750px",
}

TINYMCE_SPELLCHECKER = True
TINYMCE_COMPRESSOR = True

BlogForm.py

class addBlog(forms.ModelForm):
    body = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
    class Meta:
        model = ArticleModel
        fields = ['title', 'body',  'category']
        widgets = {'body': TinyMCE(attrs={'cols': 80, 'rows': 30})}

    class Media:
                js = ( 'static/tiny_mce/tiny_mce.js', 'static/tiny_mce/blog_textareas.js')

models.py

class Category(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField(max_length=100)

    def __unicode__(self):
        return self.name



class ArticleModel(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    datetime = models.DateTimeField()
    username = models.CharField(max_length=50)
    category = models.CharField(max_length=30)
    tags = JSONField()

    def __unicode__(self):
        return self.title

Теперь я пробовал много решений, но безуспешно.


person thecreator232    schedule 23.07.2014    source источник


Ответы (1)


Что ж, почему бы вам не попробовать добавить ckeditor (еще один редактор форматированного текста) на свой сайт администратора, используя javascript-версию ckeditor, например:

Загрузите ckeditor с http://ckeditor.com/download и распакуйте zip-файл, поместите разархивированную папку в статический корень. . добавьте статические файлы ckeditor в шаблон администратора, например:

В admin>base.html(шаблон):

<script src="{{STATIC_URL}}ckeditor/ckeditor.js"></script>

Исходя из вашего класса ArticleModel, я предполагаю, что вы хотите добавить ckeditor в body, и на сайте администратора он создаст TextField с идентификатором id_body, поэтому все, что вам нужно сделать, это (в admin> base.html):

<script>
  CKEDITOR.replace( '#id_body' );
</script>

Ps: я игнорирую формы здесь.

person ruddra    schedule 23.07.2014