0

与大多数文章不同,我没有尝试将 tinyMCE 集成到管理页面中。

我正在构建一个包含多个博客的站点,并且我想将 tinyMCE 集成到用户应该输入他的文章的文本区域中。上面提到的 textarea 不在管理控制台中。

我阅读了文档并逐行按照步骤操作。我所做的唯一更改是使用 STATIC_ROOT 而不是 MEDIA_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

现在我尝试了很多解决方案,但没有成功。

4

1 回答 1

2

那么,您为什么不尝试使用 ckeditor 的 javascript 版本将 ckeditor(另一个富文本编辑器)添加到您的管理站点,例如:

从http://ckeditor.com/download下载 ckeditor并解压 zip 文件,将解压后的文件夹放在静态根目录下。将 ckeditor 静态文件添加到管理员的模板中,例如:

在 admin>base.html(template) 中:

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

从您的 ArticleModel 类中,我假设您想将 ckeditor 添加到body,并且在管理站点中,它将创建一个带有 id 的 TextField id_body,所以您需要做的就是(在 admin>base.html 中):

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

Ps:我在这里忽略表格。

于 2014-07-23T16:45:16.380 回答