2016-05-22 8 views
5

यह Django Ckeditor image browser not finding images का डुप्लिकेट है, लेकिन मेरा मानना ​​है कि उत्तर गलत है (इसमें एक स्पष्ट बग है जिसमें एक अनिर्धारित चर है, पायथन इंडेंटेशन की कमी का उल्लेख नहीं है)।Django CKEditor छवि अपलोड नहीं दिख रहे

मैं Django CKEditor 5.0.3 और Django 1.9.6 का उपयोग कर रहा हूं। मैं अपने व्यवस्थापक में छवियों को अपलोड करने में सक्षम हूं, लेकिन वे व्यवस्थापक के भीतर एक लाल एक्स के रूप में दिखाई देते हैं और मेरी साइट पर प्रकट नहीं होते हैं।

मैं अभी भी MEDIA_ROOT और whatnot के साथ एक सा संघर्ष कर रही है, लेकिन मुझे लगता है कि मैं यह सही है:

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() 

उत्तर

4

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 के डेव सर्वर का उपयोग कर, स्टैटिक फ़ाइलें डिफ़ॉल्ट नहीं बल्कि मीडिया फ़ाइलों द्वारा सेवा कर रहे हैं, तो आप सर्वर उन पर विचार करने के लिए मजबूर कर सकते हैं, नीचे दिए गए यूआरएल विन्यास काम करना चाहिए।

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

लापता समारोह patternsold example से एक पुराने समारोह मैं Django 1.6 या 1.7 पर इस्तेमाल किया विश्वास था।

2

Django-CKEditor 5.3.0 के साथ Django 1.8 का उपयोग करना, मैं ऊपर (फ़ाइलों को अपलोड करने से काम किया उन लोगों के रूप में ठीक उसी लक्षण हो रही थी, लेकिन <img> टैग की src विशेषता गलत तरीके से सेट किया गया था, में एक लाल "X" के कारण प्रकाशन पर पूर्वावलोकन और टूटी हुई छवि लिंक)।

हालांकि, मेरे मामले में, मुझे urls.py में कुछ भी बदलने की ज़रूरत नहीं थी। मेरी समस्या यह है कि मैं था:

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

तो मेरी गलती CKEDITOR_UPLOAD_PATH पथ जहाँ मैं करने के लिए अपलोड करने के लिए CKEditor चाहता था दे रहा था (तार्किक, कोई?)।

ठीक मसा में

CKEDITOR_UPLOAD_PATH = "ckeditor"

के ऊपर लाइन बदलने के लिए मैं देख सकता हूँ कि यह कैसे की अनुमति देता है Django-CKEditor अपलोड करने के लिए MEDIA_ROOT और की सेवा के लिए MEDIA_URL उपयोग करने की क्षमता थी। फिर भी मैंने सोचा कि किसी को यह कहना चाहिए: "CKEDITOR_UPLOAD_PATH सेट करते समय पूर्ण पथ का उपयोग न करें!"

मुझे आशा है कि यह दूसरों को कुछ समय बचाएगा।

संबंधित मुद्दे