【问题标题】:django-ckeditor to Django admindjango-ckeditor 到 Django 管理员
【发布时间】:2015-01-17 06:04:04
【问题描述】:

我已经按照docs 中的说明在 django 1.5 上安装了 django-ckeditor。 如文档中所述,我已将应用程序 models.py 中的 TextField 更改为 RichTextField。 但是我仍然在 Django 管理员而不是 ckeditor 中看到空白文本区域。 This question 在 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';
};

【问题讨论】:

    标签: django django-admin django-ckeditor


    【解决方案1】:

    最简单的方法是使用 Django 的 ModelAdminclass Media

    假设您有一个 Article 模型和一个 TextField,您希望将 ckeditor 添加到该模型中。假设您已将 ckeditor.js 文件保存在项目的 static 文件夹中,您应该执行以下操作:

    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')
    

    如果您希望添加 TinyMCE 而不是 ckeditor,我在 GitHub 上有一个存储库以使其更容易:https://github.com/xyres/django-tinymce-noapp

    更新

    查看您的配置文件后,我确定问题不在 Django 中,而是在您的配置文件中。

    您需要告诉 CKEditor 要将编辑器添加到哪个字段。所以,从你的配置文件中删除所有内容,只添加这一行:

    CKEDITOR.replace('textarea');
    

    这将用编辑器替换文本区域。

    不要忘记将此配置文件添加到class Media

    【讨论】:

    • 对我不起作用,仍然得到常规的 textarea 而不是 ckeditor
    • @IliyaTamarkin 我可以看看你的配置文件吗?
    • 现在我在加载页面时在 javascript 中收到“Uncaught ReferenceError: textarea is not defined”。
    • @IliyaTamarkin 哎呀。对不起。错过了报价!它应该是 'textarea' 而不是 textarea。更新了答案。
    • 现在我在 chrome 中收到以下错误: Uncaught TypeError: Cannot read property 'getEditor' of undefined (anonymous function)CKEDITOR.replace ckeditor.js:314a ckeditor.js:314 ckeditor.js:318 config.js:12
    【解决方案2】:

    您可以按照 github-django ckeditor 的这一步操作,它将以 ckeditor 作为输出成功运行。我已经通过制作模型并对其进行测试进行了验证: 链接:https://github.com/django-ckeditor/django-ckeditor

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 2020-05-09
      • 1970-01-01
      相关资源
      最近更新 更多