2010-02-07 57 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的」類屬性的文本區域。

相關問題