2014-12-05 64 views
0

我一直在遵循https://github.com/django-ckeditor/django-ckeditor的指示,并且擦掉数据库以获取RichTextField()注册。我的models.py是:如何让我的django-ckeditor安装识别?

#!/usr/bin/python 

import settings 
from ckeditor.fields import RichTextField 
from django.db import models 

class Page(models.Model): 
    title = models.CharField(max_length = 255) 
    body = RichTextField() 
    location = models.CharField(max_length = 255, verbose_name = "URL") 
    keywords = models.CharField(max_length = 255, blank = True) 
    meta_description = models.CharField(max_length = 255, blank = True) 
    script = models.TextField(blank = True) 
    def __unicode__(self): 
     return 'Page "' + self.title + '" at ' + self.location 
    class Meta: 
     ordering = ['title'] 

然而,CKEditor的是显示不出来的“身体”现场,一看为admin页面编辑器的页面源背叛没有提及的CKEditor。

JavaScript的夹杂物:

<title>Add page | Django site admin</title> 
<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" /> 
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css" /> 
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/static/admin/css/ie.css" /><![endif]--> 

<script type="text/javascript">window.__admin_media_prefix__ = "/static/admin/";</script> 

<script type="text/javascript" src="/admin/jsi18n/"></script> 
<script type="text/javascript" src="/static/admin/js/core.js"></script> 
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script> 
<script type="text/javascript" src="/static/admin/js/jquery.js"></script> 
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script> 
<script type="text/javascript" src="/static/admin/js/actions.js"></script> 

什么可以/我应该怎么做,这样的“页”的“身体”字段具有其窗口小部件CKEDITOR?

回答

1

我知道这是一个老问题,但还没有得到答复,它可能帮助别人......

下面是Django上使用CKEDITOR时,我遵循的步骤。

1.新增 'CKEditor的' 到安装的应用程序在settings.py settings.py

2.增加CKEditor的配置变量。 (载位置和工具)

CKEDITOR_UPLOAD_PATH = MEDIA_ROOT 
CKEDITOR_BASEPATH = os.path.join(STATIC_ROOT, "ckeditor/") 

CKEDITOR_CONFIGS = { 

    'default': { 
     'toolbar': [ 
      ['Undo', 'Redo', 
      '-', 'Bold', 'Italic', 'Underline', 
      '-', 'Link', 'Unlink', 'Anchor', 
      '-', 'Format', 
      '-', 'SpellChecker', 'Scayt', 
      '-', 'Maximize', 
      '-', 'Language', 
      ], 
     ], 
     'height': '100%', 
     'width': '100%', 
     'toolbarCanCollapse': False, 
    }, 
    'full': { 
     'toolbar': [ 
      ['Undo', 'Redo', 
      '-', 'Bold', 'Italic', 'Underline', 'NumberedList', 'BulletedList', 
      '-', 'Outdent', 'Indent', 'Blockquote', 'CreateDiv', 
      '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', 
      '-', 'TextColor', 'BGColor', 
      '-', 'Maximize', 'ShowBlocks', #'Image' , 
      '-', 'Cut', 'Copy', 'Paste', 'PasteText', 
      ], 
      ['-', 'SpecialChar', 
      '-', 'Source', 
      ], 
      [ 
       '-', 'Styles', 'Format', 'Font', 'FontSize' 
      ], 
      [ 
       '-', 'BidiLtr', 'BidiRtl' 
      ] 
     ], 
     'width': '100%', 
     'height': '600px', 
     'toolbarCanCollapse': False, 
    }, 
    'disable': { 
     'toolbar': [], 
     'width': '100%', 
     'height': '600px', 
     'toolbarCanCollapse': False, 
    }, 
} 

3.添加的CKEditor的车型

from django.db import models 
from ckeditor.fields import RichTextField 

class Article(models.Model): 
    content = RichTextField(default="") 

4.最后,魔术当你在表单中添加CKEditor的部件发生:

from django import forms 
from django.utils.translation import ugettext_lazy as _ 
from ckeditor.widgets import CKEditorWidget 
from apps.articles.models import Article 


class ArticleForm(forms.ModelForm): 

    content = forms.CharField(widget=CKEditorWidget(config_name='full'), label=_('Content')) 

    class Meta: 
     model = Article 

当然,别忘了

python manage.py collectstatic 

以获取所有静态数据到您的静态目录,并且

python manage.py makemigrations model_name 
python manage.py migrate model_name 

创建数据库字段。

还有一件事!此添加到页面头部时的形式,以加载必要的脚本CKEditor的是用来工作

{{ form_name.media }} 

;-)