2014-07-23 55 views
0

与大多数文章不同,我不想将tinyMCE集成到管理页面。将TinyMCE集成到django中

我正在建立一个网站与多个博客的,我想集成tinyMCE到用户应该进入他的文章的textarea。上面提到的textarea不在管理控制台中。

我读了docs,并按照步骤逐行进行。我做的唯一的改变是我使用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 

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

回答

2

好了,你为什么不尝试使用CKEditor的的JavaScript版本,例如添加CKEditor的(另一个富文本编辑器),以您的adminsite:

下载CKEditor的从http://ckeditor.com/download并提取zip文件,把解压静态根目录下的文件夹CKEditor的静态文件添加到您的管理员的模板,如:

在管理> base.html文件(模板):

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

从你的类ArticleModel,我假设你想要的CKEditor添加到body,并在管理网站,它会创建一个ID id_body一个文本字段,因此,所有你需要做的就是这个(在管理> base.html文件):

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

PS:我在这里忽略了形式。