任何人都可以描述我如何在django.contrib.flatpages中实现ckeditor吗?任何人都可以描述我如何在django.contrib.flatpages中实现ckeditor吗?
回答
几个步骤来完成这项工作。首先,确保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调用中实现不同的选项来快速更改工具栏。如果非技术人员要编辑这些页面,则可能需要使用简单的工具栏。您可以在上面的代码中取消注释该行来实现该行。
找到很好的解决办法:
这是一个有点棘手。我在我的urls.py中有admin.autodiscover(), ,所以它会自动创建一个管理页面,如django.contrib.flatpages中定义的 。我当然不想去 分开Django的东西,也不想给 增加自动发现的便利。
http://www.elidickinson.com/story/django-flatpages-and-ckeditor/2011-11
对于一个解决方案,而模板黑客检查此页: 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的”类属性的文本区域。
- 1. 任何人都可以详细描述如何在eclipse中设置javasci(SCILAB)吗?
- 2. 任何人都可以描述范围的流程流程吗?
- 3. 任何人都可以在我的Damerau-Levenshtein Distance实现中发现错误吗?
- 4. 任何人都可以描述我,在android的aidl中单向是什么?
- 5. 任何人都可以帮助我吗?
- 6. 任何人都可以在fork()之后解释有关'文件描述符'的简单描述吗?
- 7. 任何人都可以点我在Angular2
- 8. 任何人都可以在c中帮助我吗?
- 9. 任何人都可以解释OAuth吗?
- 10. 任何人都可以纠正它吗?
- 11. 任何人都可以描述什么是Twitter的详细流api限制?
- 12. 任何人都可以描述Dijkstra算法的这部分代码
- 13. 任何人都可以解释我StandardScaler?
- 14. 任何人都可以告诉我如何在Rails3中做链接标记吗?
- 15. 任何人都可以使用以下JScript帮助我吗?
- 16. 任何人都可以在VS2012的C++/CLI中使用System.Windows.Input.ICommand吗?
- 17. 任何人都可以在C中解释这个结构吗?
- 18. 任何人都可以在Delphi或FreePascal中指向AMF库吗?
- 19. 任何人都可以解释我这个代码行吗?
- 20. 任何人都可以帮助我使用C++类吗?
- 21. 任何人都可以加快我的MySQL存储过程吗?
- 22. 任何人都可以请帮我改正这段代码吗?
- 23. 任何人都可以为我识别这种语言吗?
- 24. 任何人都可以帮助我这个宏吗?
- 25. 任何人都可以帮助我找到Microsoft.VisualStudio.SourceSafe.Interop .dll吗?
- 26. 任何人都可以帮助我提高查询效率吗?
- 27. 任何人都可以帮我编写LINQ查询吗?
- 28. 任何人都可以帮我解决这个错误吗? 0x80041002
- 29. 任何人都可以帮我干这个REGEX吗?
- 30. 任何人都可以解释我这个javax swing方法吗?
我很想看到非模板黑客解决方案,但现在链接已经死机。 – 2013-03-29 21:45:16
我发现这是来自同一作者:https://gist.github.com/elidickinson/1379652 – pymarco 2014-04-30 01:53:37