0

docsの指示に従って、django 1.5にdjango-ckeditorをインストールしました。ドキュメントに記載されているように、アプリケーション models.py の TextField を RichTextField に変更しました。ただし、Django admin には、ckeditor ではなく空白のテキストエリアが表示されます。 この質問は 3 年前に尋ねられたもので、どの回答も役に立ちませんでした。ページを取得すると、ckeditor.jsが正常に読み込まれます。助言がありますか?私のアプリ名はニュースフィードです。

models.py:

from cms.models.pluginmodel import CMSPlugin
from cms.models import Page
from django.db import models
from time import time
from ckeditor.fields import RichTextField

def get_upload_file_name(instance, filename):
    return "uploaded_files/%s_%s" % (str(time()).replace('.','_'),filename)


# Create your models here.
class NewsFeed (models.Model):
    title = models.CharField(('Feed Name'),max_length=200,help_text=('Feed name is visible only in edit mode'))
    publisher = models.CharField(('Publisher'),max_length=200)

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return "/newsfeed/get/%i" % self.id

class NewsItem(models.Model):
    feed_id = models.ForeignKey(NewsFeed)
    title = models.CharField(('Title'),max_length=200)
    subtitle = models.CharField(('Sub-Title'),max_length=350,help_text=('Subtitles are displayed in auto-scroller and has max characters of 350'))
    #body = models.TextField(('Content'),blank=True,help_text=('Content is NOT visible in auto-scroller !'))
    body = RichTextField()      
    url = models.URLField(("Link"), blank=True, null=True)
    page_link = models.ForeignKey(Page, verbose_name=("page"), blank=True, null=True, help_text=("A link to a page has priority over a text link."))
    pub_date = models.DateTimeField('Publish Date')
    is_published = models.BooleanField(('Published'), default=False)


class NewsFeedPlugin(CMSPlugin):
    newsfeed = models.ForeignKey(NewsFeed)

admin.py:

from django.contrib import admin
from newsfeed.models import NewsFeed,NewsItem
from cms.admin.placeholderadmin import PlaceholderAdmin


class NewsItemInline(admin.StackedInline):
    model = NewsItem
    extra=0

class NewsFeedAdmin(admin.ModelAdmin):
    inlines = [NewsItemInline]
    class Media:
       js = ('ckeditor/ckeditor/ckeditor.js')
admin.site.register(NewsFeed,NewsFeedAdmin)

ckeditor の config.js:

/**
 * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.html or http://ckeditor.com/license
 */

CKEDITOR.editorConfig = function( config ) {
    // Define changes to default configuration here. For example:
    // config.language = 'fr';
    // config.uiColor = '#AADC6E';
};
4

2 に答える 2

5

これを行う最も簡単な方法はclass Media、Django のを利用することModelAdminです。

ckeditor を追加したいArticleモデルがあるとします。プロジェクトのフォルダー内にファイルTextFieldを保持していると仮定すると、次のことを行う必要があります。ckeditor.jsstatic

admin.py

class ArticleAdmin(admin.ModelAdmin):
    ...
    # your code here 
    ...

    class Media:
        js = ('ckeditor.js',)
        # do not write '/static/ckeditor.js' as Django automatically looks 
        # in the static folder

それでおしまい。

ckeditor またはその他の JavaScript ファイルの構成ファイルを追加する場合は、次のようにします。

js = ('ckeditor.js', 'configuration-ckeditor.js')

ckeditor の代わりに TinyMCE を追加したい場合は、簡単にするために GitHub にリポジトリがあります: https://github.com/xyres/django-tinymce-noapp

アップデート

構成ファイルを確認したところ、問題は Django ではなく、構成ファイルにあると確信しています。

エディターを追加するフィールドを CKEditor に指示する必要があります。したがって、構成ファイルからすべてを削除し、次の 1 行だけを追加します。

CKEDITOR.replace('textarea');

これにより、テキストエリアがエディターに置き換えられます。

この構成ファイルを に追加することを忘れないでくださいclass Media

于 2014-11-19T16:36:42.323 に答える
0

github-django ckeditor のこの手順に従うと、出力として ckeditor で正常に実行されます。モデルを作成してテストすることで検証しました: リンク: https://github.com/django-ckeditor/django-ckeditor

于 2017-01-25T09:01:20.163 に答える