0

django.contrib.flatpages で ckeditor を実装する方法を説明できる人はいますか?

4

3 に答える 3

1

良い解決策が見つかりました:

これは少し注意が必要です。urls.pyにadmin.autodiscover()があるので、django.contrib.flatpagesで定義されているようにフラットページの管理者が自動的に作成されます。私は確かに、Djangoに付属しているものをハッキングしたくないし、自動検出の便利さをあきらめたくない。

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

于 2012-05-05T03:11:10.707 に答える
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 変更フォーム テンプレートをオーバーライドする必要があります。テンプレート ディレクトリで、次のサブディレクトリにファイルを作成します: <your templates dir>/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 javascript をインポートし、django のインポート済みの jQuery を ckeditor jQuery アダプターと共に使用します。最後に、ページに何らかのスタイルを強制することになります。これは、デフォルトでは少し乱雑に見えるためです。

ここから、ckeditor 呼び出しにさまざまなオプションを実装することで、ツールバーをすばやく変更できます。技術者ではない人がこれらのフラットページを編集する場合は、単純なツールバーに移動することが必要になる可能性があります。上記のコードでその行のコメントを外すだけで、それを実装できます。

于 2010-06-18T21:07:24.157 に答える
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 は、class 属性が「ckeditor」に設定されたすべてのテキストエリアをチェックします。

于 2013-07-06T01:03:19.637 に答える