Ne yazık ki bu doğrudur. Django-ckeditor, bu sorun için yerleşik bir çözüm sunmuyor. Yüklenen dosyalar hakkında bilgi herhangi bir yerde saklanmaz.
Bunları saklamak istiyorsanız - kendiniz yapmalısınız!
geçersiz ile uygun veri modelini yöntemini silmek oluşturun (veya hazır, sizin için Django delete FileField dosyaların kaldırılmasını işleyebilir "akıllı alanlarda" herhangi birini kullanmak): Kendi sağlayın
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)
: işlemlerini ezberlemek için kullanılacaktır "
yükleme" (ve isteğe bağlı "
göz") görünümü, uygulanması
değiştirme varsayılan yönlendirmeler 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'),
...
]
ve Şimdi ... hepsi bu eğer kayıt yeni adres uploadedfile modeli, arama ve kaldırmak gözatmak için tha iznini verir Yüklenen resimlerden herhangi biri doğrudan Django Yönetici panelinden.
(Bu çözelti uzantısı
django-ckeditor 5.3 ile Django 1.10
için uygulanmıştır)