2014-12-05 4 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 не отображается в поле «тело», и посмотреть на исходный код страницы для редактора админ страницы не предает никакой ссылки на 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

Я знаю, что это старый вопрос, но он не отвечал, и это может помочь другим ...

Ниже приведены шаги, которые я следовать при использовании CKEditor на Джанго.

1.Add 'CKEditor' для установленных приложений на settings.py

2.Add CKEditor конфигурационных переменных в settings.py. (Место загрузки и инструменты)

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.Add CKEditor к моделям

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

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

4.Finally, магия происходит, когда вы добавляете 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 }} 

;-)

Смежные вопросы