python - Django CKEditor 图片上传没有出现

标签 python django ckeditor

这是 Django Ckeditor image browser not finding images 的副本,但我认为那里的答案是错误的(其中有一个明显的错误,其中有一个 undefined variable ,更不用说缺少 Python 缩进了)。

我正在使用 Django CKEditor 5.0.3 和 Django 1.9.6。我可以在我的管理员中上传图片,但它们在管理员中显示为红色 X,并且不会出现在我的网站上。

我还在为 MEDIA_ROOT 之类的东西苦苦挣扎,但我想我做对了:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

MEDIA_URL = "image_upload/"
MEDIA_ROOT = os.path.join(BASE_DIR, "image_upload")

CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_IMAGE_BACKEND = "pillow"
CKEDITOR_UPLOAD_SLUGIFY_FILENAME = False

我的 urls.py,包括我尝试清理链接的答案:

from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from mainsite.views import HomepageView, AboutView, ContactView
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    url(r'^admin/', admin.site.urls, name="admin"),
    url(r'^$', HomepageView.as_view(), name="homepage"),
    url(r'^about/', AboutView.as_view(), name="about"),
    url(r'^contact/', ContactView.as_view(), name="contact"),
    url(r'^blog/', include("blog.urls", namespace="blog")),
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

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

urlpatterns += staticfiles_urlpatterns()

最佳答案

使用 CKEDITOR_UPLOAD_PATH = 'uploads/' 使 django-ckeditor 将图像上传到 /media/uploads/,例如:

settings.py:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static/'),
]
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
CKEDITOR_UPLOAD_PATH = 'uploads/'

当使用 Django 的开发服务器时,默认提供静态文件而不是媒体文件,因此您可以强制服务器考虑它们,下面的 url 配置应该可以工作。

urls.py:

from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.views.static import serve
from .views import HomeView

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', HomeView.as_view(), name='home'),
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),

# serving media files only on debug mode
if settings.DEBUG:
    urlpatterns += [
        url(r'^media/(?P<path>.*)$', serve, {
            'document_root': settings.MEDIA_ROOT
        }),
    ]

old example 中缺失的函数 patterns是我认为在 Django 1.6 或 1.7 上使用的旧函数。

关于python - Django CKEditor 图片上传没有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376289/

相关文章:

django - 将 GAE Django 应用程序移植到 Azure AppFabric

python - Django:保存相关对象后执行操作

jquery - ckeditor图像对齐中心自定义

javascript - CKEditor跨域请求文件上传

python - 使用 Pytmx 处理图 block 对象

python - 如何透明地重定向 Python 导入?

python - CSRF token 丢失或 Django 无效

php - 多个 ckeditor 具有相同名称的文本区域

python - 如何获得书 "Web Scraping with Python: Collecting Data from the Modern Web"第 7 章数据标准化部分中的相同结果

python - 在多列上使用 df.apply 的更好方法是什么?