2010-02-07 53 views

回答

1

几个步骤来完成这项工作。首先,确保ckeditor.js以某种方式从django提供。有关这方面的信息可以在http://docs.djangoproject.com/en/1.2/howto/static-files/#howto-static-files找到。在这个例子中,我将从127.0.0.1:8000/js/ckeditor/ckeditor.js开始。

您需要重写标准flatpage更改表单模板。在你的模板目录下,建立在以下子目录中的文件:<你的模板目录> /admin/flatpages/flatpage/change_form.html

创建以下文本中:


{% extends "admin/change_form.html" %} 
{% block extrahead %} 
{{ block.super }} 
<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script> 

<script type="text/javascript" charset="utf-8"> 
var $ = jQuery = django.jQuery.noConflict(); // Use djangos jquery as our jQuery 
</script> 

<script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script> 

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function(){ 
$('textarea').ckeditor({ 
    "skin":"kama", 
    "width" : 850, 
    // "toolbar" : "Basic", // uncomment this line to use a basic toolbar 

}); 
}); 

</script> 

{# Adding some custom style to perty thing up a bit. #} 
<style type="text/css"> 
div>.cke_skin_kama{ 
width: 100%; 
padding: 0!important; 
clear: both; 
} 
</style> 

{% endblock %} 

前几行包含django的额外块的默认文本。脚本的其余部分导入ckeditor javascripts,并将django的已导入jQuery与ckeditor jQuery适配器一起使用。最后,我们最终在页面上强加一些风格,因为默认情况下,事情看起来有点混乱。

从这里,您可以通过在ckeditor调用中实现不同的选项来快速更改工具栏。如果非技术人员要编辑这些页面,则可能需要使用简单的工具栏。您可以在上面的代码中取消注释该行来实现该行。

1

找到很好的解决办法:

这是一个有点棘手。我在我的urls.py中有admin.autodiscover(), ,所以它会自动创建一个管理页面,如django.contrib.flatpages中定义的 。我当然不想去 分开Django的东西,也不想给 增加自动发现的便利。

http://www.elidickinson.com/story/django-flatpages-and-ckeditor/2011-11

+0

我很想看到非模板黑客解决方案,但现在链接已经死机。 – 2013-03-29 21:45:16

+0

我发现这是来自同一作者:https://gist.github.com/elidickinson/1379652 – pymarco 2014-04-30 01:53:37

0

对于一个解决方案,而模板黑客检查此页: http://johansdevblog.blogspot.it/2009/10/adding-ckeditor-to-django-admin.html

我在这里报告的例子,如果链路出现故障。 这是一个简单的模型。

from django.db import models 

class SampleModel(models.Model): 
    title = models.CharField(max_length=50) 
    text = models.TextField() 

def __unicode__(self): 
    return self.title 

这是如何将ckeditor支持添加到特定类型的字段,在这种情况下是TextArea。

from sampleapp.models import SampleModel 
from django.contrib import admin 
from django import forms 
from django.db import models 

class SampleModelAdmin(admin.ModelAdmin): 
    formfield_overrides = { models.TextField: {'widget': forms.Textarea(attrs={'class':'ckeditor'})}, } 

class Media: 
    js = ('ckeditor/ckeditor.js',) # The , at the end of this list IS important. 

admin.site.register(SampleModel,SampleModelAdmin) 

此时ckeditor.js会检查所有设置为“CKEditor的”类属性的文本区域。

相关问题