Python 谁能描述一下我是如何在django.contrib.flatpages中实现ckeditor的?

Python 谁能描述一下我是如何在django.contrib.flatpages中实现ckeditor的?,python,django-admin,ckeditor,django-flatpages,Python,Django Admin,Ckeditor,Django Flatpages,有人能描述一下我是如何在django.contrib.flatpages中实现ckeditor的吗?完成这项工作的几个步骤。首先,确保django以某种方式提供了ckeditor.js。有关这方面的信息,请访问。对于本例,我将从127.0.0.1:8000/js/ckeditor/ckeditor.js为其提供服务 您需要覆盖标准的flatpage更改表单模板。在模板目录中,在以下子目录中创建一个文件:/admin/flatpages/flatpage/change\u form.html 在内

有人能描述一下我是如何在django.contrib.flatpages中实现ckeditor的吗?

完成这项工作的几个步骤。首先,确保django以某种方式提供了ckeditor.js。有关这方面的信息,请访问。对于本例,我将从127.0.0.1:8000/js/ckeditor/ckeditor.js为其提供服务

您需要覆盖标准的flatpage更改表单模板。在模板目录中,在以下子目录中创建一个文件:/admin/flatpages/flatpage/change\u 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 %}

{%extends“admin/change\u form.html”%}
{%block extrahead%}
{{block.super}}
var$=jQuery=django.jQuery.noConflict();//使用djangos jquery作为我们的jquery
$(文档).ready(函数(){
$('textarea').ckeditor({
“皮肤”:“卡玛”,
“宽度”:850,
//“工具栏”:“Basic”,//取消对此行的注释以使用基本工具栏
});
});
{#给perty东西添加一些自定义样式。#
div>.cke\u skin\u kama{
宽度:100%;
填充:0!重要;
明确:两者皆有;
}
{%endblock%}
前几行包含django的extrahead块的默认文本。脚本的其余部分导入ckeditor javascripts,并使用django已经导入的jQuery和ckeditor jQuery适配器。最后,我们在页面上强制一些样式,因为默认情况下,事情看起来有点混乱

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

找到了很好的解决方案:

这有点棘手。我的URL.py中有admin.autodiscover(), 因此,它会自动为flatpages创建一个管理员 在django.contrib.flatpages中定义。我当然不想去 砍掉Django带来的东西,我也不想放弃 提高了自动发现的便利性


要获得无模板黑客攻击的解决方案,请查看本页:

我在这里报告链接断开时的示例。 这是一个简单的模型

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”的所有textarea。

我很想看到解决此问题的非模板黑客解决方案,但现在链接已失效。