Django开发者群  - 讨论区

标题:【教程】django admin中使用CKEditor(图片上传)

2011年03月22日 星期二 22:12

<!-- @page { margin: 0.79in } PRE.cjk { font-family: "DejaVu Sans", monospace } P { margin-bottom: 0.08in } A:link { so-language: zxx } -->

Django admin中使用CKEditor:

 

环境:

system: ubuntu 10.10

python: 2.6.6

django: 1.2.5 final

web server: django自带

DEMO max

DEMO所在路径/home/maotoo/django/

 

 

 

基础部分:

 

1:从此处下载django-CKEditor: https://github.com/shaunsephton/django-ckeditor#readme解压下载的文件,安装到django中,(即:从命令行进入刚刚下载解压缩的文件,运行python setup.py install,系统就会自动完成安装。如果linux记得给安装权限。)

 

 

2:建立DEMO工程,打开命令行:

django-admin.py startproject max #建立项目 max注意项目所在的目录,

 

3:建立一个基本的app

 

python manage.py startapp news

 

model.py如下:

from django.db import models

from django.contrib import admin

class News(models.Model):

news_title=models.CharField('标题',max_length=200,unique=True)

news_content=models.TextField('内容')

def __unicode__(self):

return self.news_title

 

class NewsAdmin(admin.ModelAdmin):

list_dislpay='news_title',

 

admin.site.register(News,NewsAdmin)

 

4:开启djangoadmin功能,并将刚刚建立的app : news 注册到admin中,在测试服务器下运行,此时还没有涉及到CKEditor部分,基本上都能完成。

 

 

 

文件配置:

1:在max中建立如下文件夹:

static:用来保存CKEditor(js,CSS等文件)

uploads:图片上传保存位置

2:进入刚刚下载的django_CKEditor,将目录中的ckeditor复制到max中。将ckeditor/media/下的ckeditor粘贴到static中。

 

3:进入max/settings.py:

#详细意思请看安装说明:https://github.com/shaunsephton/django-ckeditor#readme

 

CKEDITOR_MEDIA_PREFIX = "/static/ckeditor/"

#指定CKEditor访问JSCSS文件的前缀,注意不要忘记首尾斜杠

 

CKEDITOR_UPLOAD_PATH = "/home/maotoo/django/max/uploads"

#图片上传的路径

 

CKEDITOR_UPLOAD_PREFIX = "http://localhost:8000/uploads/

#访问上传文件的前缀

 

CKEDITOR_RESTRICT_BY_USER=True

#开启图片上传功能

 

CKEDITOR_CONFIGS = {

'default': {

      	  'toolbar': 'Full',
	        'height': 300,
      	  'width': 300,
	    },
	    'awesome_ckeditor': {
      	  'toolbar': 'Basic',
    		},
	}			#CKEditor的一些定制
4:进入max/urls.py
	url中添加:
	(r'^ckeditor/', include('ckeditor.urls')),

5:添加templates文件:
	max/settings.py:
	TEMPLATE_DIRS=(
	'/home/maotoo/django/max/ckeditor/templates/',
	)
	
文件配置基本上就完成了。

 

 

使用CKEditor

1:进入刚刚news,编辑model文件

from ckeditor.fields import RichTextField

class News(models.Model):

….

news_content=RichTextField()

 

 

 

 

注:django_ckeditor中还有一种使用方式,不过没这个简单,详细的阅读官方文档。

 

 

几种常见错误的解决方式:

运行服务器,此时,在admin中显示的依然是一个Text文本框。查看控制台发现如下问题:

GET /static/ckeditor/ckeditor/ckeditor.js HTTP/1.1" 404 2055 意思是说没有找到ckeditor.js文件。

解决办法:

1:到static中调整文件目录

2:进入urls.py 中添加

第一行from django.conf import settings

最后一行:

if settings.DEBUG:

urlpatterns+=patterns('',

(r'^static(P<path>.*$,'django.views.static.serve'{'document_root':'/home/maotoo/django/myck/static/'}

)

)

刷新,即可显示CKEditor

 

GET /localhost:8000/uploads/2011/03/22/1.jpg HTTP/1.1" 404 2120

同样的解决办法:

(r'uploads(P<path>.*$,'django.views.static.serve'{'document_root':'/home/maotoo/django/myck/uploads/'}

)

是不是就可以上传图片啦 :)

 

 

总结:

1:要读懂django_ckeditor官方的说明文档,

2:一般都是JS路径出错,所以要注意通过测试服务器的提示,找到问题所在。注意404错误。

3:测试服务器中,解决JS路径错误比较方便的就是urlpatterns中做跳转。如果放在服务器上,当然有更好的方法,譬如:apache中使用alias语句

 

PS:这一次就不提供DEMO实例了,ubuntu下敲拼音敲得真累呀-.-

 

<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } -->

 

pan

pan

2011年03月23日 星期三 08:43

上次使用的tinyMCE,现在换回ckeditor了?

2011年03月28日 星期一 13:11

根据配置上传已经能够实现了,可是在显示时,图片路径变成了这样的“http://127.0.0.1:8000/uploads/%5Cadmin%5C2011%5C03%5C28%5C111.jpg”,把其中的“%5C”手动换成“/”,就是图片真实路径了,请问遇到过没?咋解决呢?

ps:火狐浏览器下有这个问题,ie8没有~

ps2:点击上传之后,返回到图像中的路径有乱码(ie8)~

2011年03月31日 星期四 01:56

能否贴一张上传图片的界面截图?!请问可以上传本地图片吗?

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号