दुर्भाग्य से यह सच है। 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)