【问题标题】:Django Ckeditor image browser not finding imagesDjango Ckeditor图像浏览器找不到图像
【发布时间】: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')),

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

【问题讨论】:

标签: python django image ckeditor http-status-code-404


【解决方案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
        }),
    
             ]
    

    【讨论】:

      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多