Django Ckeditor图像浏览器找不到图像

Posted

技术标签:

【中文标题】Django Ckeditor图像浏览器找不到图像【英文标题】:Django Ckeditor image browser not finding images 【发布时间】:2014-11-24 12:33:15 【问题描述】:

所以我正在构建一个简单的博客来跟踪我的项目。我决定使用 CKeditor 作为所见即所得的编辑器。除了图像部分之外,我能够让所有这些工作。当我点击“图像浏览”时,我无法查看服务器中的图像,并且每当我上传图像时,它确实会上传但我无法查看它。它弹出一个红色的“X”。

显示正在发生的事情的屏幕截图链接:http://imgur.com/a/ODk8p

以下是我将 CKEditor 添加到我的已安装的应用程序我项目的settings.py

的代码
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'projects',
    'ckeditor',
)

稍后在我的项目的 settings.py 中,我有 CKEditor 的设置:

MEDIA_ROOT = os.environ.get('MEDIA_ROOT',os.path.join(BASE_DIR, 'media'))
MEDIA_URL = '/media/'

CKEDITOR_UPLOAD_PATH   = "uploads/"
CKEDITOR_UPLOAD_SLUGIFY_FILENAME = False
CKEDITOR_RESTRICT_BY_USER = True
CKEDITOR_JQUERY_URL = 'http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'
CKEDITOR_CONFIGS = 
    'default': 
        'removePlugins': 'stylesheetparser',
        'toolbar': 'Full',
        'height': 500,
        'width': 900,
    ,

这是我的项目的 models.py(现在看起来很简单):

from django.db import models
from ckeditor.fields import RichTextField

class Project(models.Model):
    title = models.CharField(max_length=300)
    banner = models.ImageField(upload_to='banners/')
    body = RichTextField(config_name='default')
    version = models.CharField(max_length=140)

    def __str__():
        return self.title

我也有这一行在我的项目的 urls.py 中添加 CKEditor url:

url(r'^ckeditor/', include('ckeditor.urls')),

任何想法可能是错误的?除图像外,一切正常。 任何帮助都非常感谢

【问题讨论】:

从你的截图来看,你使用的是github.com/shaunsephton/django-ckeditor。如果是这样,您使用的是什么版本? 【参考方案1】:

您缺少 ckeditor 图像后端

CKEDITOR_IMAGE_BACKEND = "pillow"

【讨论】:

谢谢!我会试试看!【参考方案2】:

每当我处理用户文件和图片上传时,10 次中有 9 次出现问题是由于“CKEDITOR_UPLOAD_PATH”文件夹的权限不正确。

红色 X 可能是备用图像,以防出现问题,例如将上传文件保存到磁盘。

【讨论】:

【参考方案3】:

如果这是在DEBUG/runserver模式,你记得添加

from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

if settings.DEBUG:
    urlpatterns += patterns(
        '',
        url(
            r'^media/(?P<path>.*)$',
            'django.views.static.serve', 
                'document_root': settings.MEDIA_ROOT,
            
        ),
    )

urlpatterns += staticfiles_urlpatterns()

致您的urls.py

【讨论】:

什么是patterns?那是一个未定义的变量,不是吗?有人可以修复缩进吗?我不确定最后一行是否应该在if 子句中。 如您所见,答案来自 2014 年。patterns 在 Django 1.8 中已弃用。早期版本的 Django 在 urls.py 中将 from django.conf.urls import patterns, url 作为默认导入。 知道了——有人可以更新答案吗?我无法让它工作。【参考方案4】:

自从我将图像存储在 AWS 上后,我遇到了完全相同的问题

我通过在settings.py 中添加这一行来解决它:

AWS_QUERYSTRING_AUTH = False

【讨论】:

我已经有了那条线,但问题仍然存在。有什么建议吗?【参考方案5】:

从 django.conf 导入设置 from django.views.static 导入服务

if settings.DEBUG:
    urlpatterns += [
    url(r'^media/(?P<path>.*)$', serve, 
        'document_root': settings.MEDIA_ROOT
    ),

         ]

【讨论】:

以上是关于Django Ckeditor图像浏览器找不到图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CKEditor 5 中启用图像上传支持?

django-ckeditor上传的图像上的绝对路径

使用 Django CkEditor 时如何解决“缺少图像源 URL”问题

django-ckeditor 上传图片以外的文件

如何为使用 Django-CKEditor 上传的图像创建 uuid4 文件名?

ckeditor_uploader动态图像上传路径