2010-02-07 2 views

Répondre

1

Quelques étapes pour y arriver. D'abord, assurez-vous que ckeditor.js est servi d'une manière ou d'une autre à partir de django. Les informations à ce sujet peuvent être trouvées au http://docs.djangoproject.com/en/1.2/howto/static-files/#howto-static-files. Pour cet exemple, je vais le servir à partir de 127.0.0.1:8000/js/ckeditor/ckeditor.js.

Vous devez remplacer le modèle de formulaire de changement de page standard. Dans votre répertoire de modèles, créez un fichier dans le sous-répertoire suivant: < vos modèles dir > /admin/flatpages/flatpage/change_form.html

Créer le texte suivant à l'intérieur:


{% 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 %} 

Les premières lignes contiennent Le texte par défaut de django pour le bloc extrahead. Le reste du script importe les javascripts ckeditor et utilise jQuery déjà importé par django avec l'adaptateur ckeditor jQuery. Enfin, nous finissons par forcer un peu de style sur la page, car par défaut, les choses semblent un peu brouillon. À partir de là, vous pouvez rapidement modifier la barre d'outils en implémentant différentes options dans l'appel de ckeditor. Aller à une barre d'outils simple est probablement quelque chose dont vous aurez besoin si des personnes non-techniques vont éditer ces pages. Vous pouvez simplement décommenter cette ligne dans le code ci-dessus pour l'implémenter.

1

trouvé une bonne solution:

Ceci est un peu délicat. J'ai admin.autodiscover() dans mon urls.py, donc il va automatiquement créer un admin pour les flatpages comme défini dans django.contrib.flatpages. Je ne veux certainement pas aller piratage quelque chose qui est venu avec Django, ni je ne veux donner la commodité de l'autodiscover.

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

+0

J'aimerais voir la solution de piratage non-modèle à cela, mais le lien est mort maintenant. –

+0

J'ai trouvé cela du même auteur: https://gist.github.com/elidickinson/1379652 – pymarco

0

Pour une solution sans vérification de piratage de modèle cette page: http://johansdevblog.blogspot.it/2009/10/adding-ckeditor-to-django-admin.html

je signaler ici l'exemple, si le lien descend. Ceci est un modèle simple.

from django.db import models 

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

def __unicode__(self): 
    return self.title 

Voici comment ajouter un support ckeditor à un type de champ spécifique, dans ce cas un 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) 

A ce stade, les ckeditor.js vérifieront toutes les textarea avec l'attribut class réglé sur « ckeditor ».

Questions connexes