2014-10-05 4 views
6

मैंने Django व्यवस्थापक इंटरफ़ेस में CKEditor के भीतर कुछ छवियां अपलोड की हैं। मैं संपादक में "छवि" बटन पर क्लिक करके छवियों को ब्राउज़ और चुन सकता हूं और फिर पॉप-अप विंडो में "सर्वर ब्राउज़ करें" पर क्लिक कर सकता हूं।django-ckeditor के साथ अपलोड की गई छवियों को कैसे निकालें?

Screenshot of the pop-up of CKEditor

मेरा प्रश्न है:: मैं कैसे सर्वर पर छवि के नष्ट कर सकते हैं यहाँ पॉप-अप का एक स्क्रीनशॉट है?

उत्तर

1

मुझे डर है कि यह ckeditor के साथ संभव नहीं है (कम से कम मुझे इस तरह की कार्यक्षमता आउट-ऑफ-द-बॉक्स दिखाई नहीं दे रही है)।

आप एक Django फ़ाइल प्रबंधक

https://www.djangopackages.com/grids/g/file-managers/

उदाहरण के लिए, django-filebrowser उपयोग कर सकते हैं।

0

दुर्भाग्य से यह सच है। Django-ckeditor उस समस्या के लिए अंतर्निहित समाधान प्रदान नहीं करता है। अपलोड की गई फ़ाइलों के बारे में जानकारी कहीं भी संग्रहीत नहीं की जाती है।

यदि आप उन्हें रखना चाहते हैं - आपको इसे स्वयं करना है!

अधिरोहित साथ उचित डाटा मॉडल पद्धति को हटाना बनाएं (या जो आप के लिए फ़ाइलों को हटाने संभाल कर सकते हैं, Django delete FileField तैयार "स्मार्ट क्षेत्रों" में से किसी का उपयोग करें):

from django.db import models 

class UploadedFile(models.Model): 
    uploaded_file = models.FileField(upload_to=u"storage/") 
    uploaded_at = models.DateField(editable=False, auto_now_add=True) 

    def __str__(self): 
     return os.path.basename(self.uploaded_file.path) 

    def url(self): 
     return self.uploaded_file.url 

    def delete(self, *args, **kwargs): 
     file_storage, file_path = self.uploaded_file.storage, self.uploaded_file.path 
     super(UploadedFile, self).delete(*args, **kwargs) 
     file_storage.delete(file_path) 

अपने खुद के प्रदान करें

from django.conf import settings 
from django.contrib.admin.views.decorators import staff_member_required 
from django.views.decorators.cache import never_cache 
from django.views.decorators.csrf import csrf_exempt 
from ckeditor_uploader.views import upload, browse 
from .models import UploadedFile 
import re 

@staff_member_required 
@csrf_exempt 
def ckeditor_upload_wrapper(request, *args, **kwargs): 
    response = upload(request, *args, **kwargs) 

    if b"Invalid" not in response.content: 
     try: 
      matched_regex = re.search("callFunction\(\d, '(.*)'\);", str(response.content)) 
      file_location = matched_regex.group(1).lstrip(settings.MEDIA_URL) 
      UploadedFile(uploaded_file=file_location).save() 
     except Exception: 
      pass 
    return response 

@staff_member_required 
@csrf_exempt 
@never_cache 
def ckeditor_browse_wrapper(request, *args, **kwargs): 
    return browse(request, *args, **kwargs) 
: की " अपलोड" (वैकल्पिक " ब्राउज़") देखने के लिए, जो लेनदेन याद करने के लिए इस्तेमाल किया जाएगा कार्यान्वयन

डिफ़ॉल्ट बदलें में पुनर्निर्देश urls.py:

... 
from app.views import ckeditor_upload_wrapper, ckeditor_browse_wrapper 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 

    #url(r'^ckeditor/', include('ckeditor_uploader.urls')), 
    url(r'^ckeditor/upload/', ckeditor_upload_wrapper, name='ckeditor_upload'), 
    url(r'^ckeditor/browse/', ckeditor_browse_wrapper, name='ckeditor_browse'), 
    ... 
] 

और बस इतना ही है ... अब अगर आप रजिस्टर अपने नए UploadedFile मॉडल, आप ब्राउज़ करने के लिए खोज और हटाने था सकेगा सीधे Django व्यवस्थापक पैनल से अपलोड की गई तस्वीरों में से कोई भी।

(यह समाधान के लिए Django 1.10 लागू किया गया था के साथ विस्तार Django-CKEditor 5,3)

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