Кто-нибудь может описать, как я реализую ckeditor в django.contrib.flatpages? - PullRequest
0 голосов
/ 07 февраля 2010

Кто-нибудь может описать, как я реализую ckeditor в django.contrib.flatpages?

Ответы [ 3 ]

1 голос
/ 05 мая 2012

Нашли хорошее решение:

Это немного сложно. У меня есть admin.autodiscover () в моем urls.py, поэтому он автоматически собирается создать администратора для плоских страниц, как определено в django.contrib.flatpages. Я конечно не хочу идти взломать что-то, что пришло с Джанго, и я не хочу давать удобство автообнаружения.

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

1 голос
/ 19 июня 2010

Несколько шагов, чтобы сделать это. Во-первых, убедитесь, что 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.

.

Вам необходимо переопределить стандартный шаблон формы изменения плоской страницы. В каталоге шаблонов создайте файл в следующем подкаталоге: <каталог шаблонов> /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 для блока extrahead. Остальная часть сценария импортирует java-скрипты ckeditor и использует уже импортированный jQuery от django с адаптером jQuery ckeditor. Наконец, мы в конечном итоге навязываем некоторый стиль на странице, так как по умолчанию все выглядит немного грязно.

Отсюда вы можете быстро изменить панель инструментов, реализовав различные опции в вызове ckeditor. Переход на простую панель инструментов, скорее всего, вам понадобится, если нетехнические люди будут редактировать эти страницы. Вы можете просто раскомментировать эту строку в приведенном выше коде, чтобы реализовать это.

0 голосов
/ 06 июля 2013

Для решения без взлома шаблона проверьте эту страницу: 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».

...