2016-05-22 37 views
5

Bu, Django Ckeditor image browser not finding images'un bir kopyasıdır, ancak cevabın yanlış olduğuna inanıyorum (Python girintisinin eksikliğinden bahsetmeden, tanımlanmamış bir değişkenle belirgin bir hata var).Django CKEditor Resim Yüklenmeleri görünmüyor

Django CKEditor 5.0.3 ve Django 1.9.6 kullanıyorum. Yöneticimdeki resimleri yükleyebilirim ancak yöneticinin içinde kırmızı bir X olarak görünüyorlar ve sitemde görünmüyorlar.

Hala MEDIA_ROOT ve etajer ile biraz mücadele ediyorum, ama sanırım Birazdan o var:

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 

Benim bağlantılı cevabı temizlemeye benim girişimi dahil 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() 

cevap

4

CKEDITOR_UPLOAD_PATH = 'uploads/' kullanımı django-ckeditor ürününün /media/uploads/ numaralı resme yüklenmesini sağlar:

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'nın dev sunucusunu kullanarak, statik dosyalar varsayılan ancak medya dosyaları tarafından sunulan, bu yüzden onları düşünmeye sunucuyu zorlayabilir aşağıda url yapılandırma çalışması gerekir.

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 
     }), 
    ] 

eksik bir işlev old example den patterns Django 1.6 veya 1.7 kullanılabilir inanıyoruz eski fonksiyonu oldu.

2

django-ckeditor 5.3.0 ile Django 1.8'i kullanarak, yukarıdakilerle aynı belirtileri görüyordum (dosyaları karşıya yükledim, ancak <img> etiketinin src özniteliği hatalı olarak ayarlandı ve bu da kırmızı bir "X" değerine neden oluyordu. yayında önizleme ve kırık görüntü bağlantıları. Ancak benim durumumda, urls.py numaralı telefondan herhangi bir şey değiştirmek zorunda kalmadım. Benim sorunum vardı:

CKEDITOR_UPLOAD_PATH = os.path.join(MEDIA_ROOT, "ckeditor")

Yani benim hatam CKEDITOR_UPLOAD_PATH ben yükleme yapmak CKEditor istediği yolunu veriyordu (mantıksal, hayır?).

düzeltme

bu django-CKEditor yüklemek için MEDIA_ROOT ve sunum için MEDIA_URL kullanma olanağı verir nasıl görebilirim Gez

CKEDITOR_UPLOAD_PATH = "ckeditor"

yukarıdaki satırı değiştirmekti. Yine de birisinin bunu söylemesi gerektiğini düşündüm: "CKEDITOR_UPLOAD_PATH'u ayarlarken tam yolu kullanmayın!"

Umarım bu, başkalarına zaman kazandırır.