Интегрируйте TinyMCE в django

Вопрос:

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

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

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

Моя 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

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

Лучший ответ:

Что ж, почему бы вам не попробовать добавить 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 id_body, поэтому все, что вам нужно сделать, это это (в admin> base.html):

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

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

Оцените статью
TechArks.Ru
Добавить комментарий